过滤PayPal 'Custom'字段 由 WooCommerce 订单发送



我需要在"自定义"字段中操作Wooccommerce发送给PayPal的数据。当Wooccommerce创建订单并发送数据时,可以在中找到

$order['custom']

这个字符串是json编码的,我尝试使用一个过滤器,但它似乎不起作用。这是我得到的:

add_filter('woocommerce_paypal_args', 'send_custom_paypal_data');
function send_custom_paypal_data($order) {
error_log(print_r($order['custom'], true)); //log variable
$order['custom'] = wp_json_encode(
array(
'field1' => 'some value',
'field2' => 'more values'
)
);
error_log(print_r($order['custom'], true)); //log value after updating variable
return $order;
}

第一次将$order['custom']变量转储到error_log时,我从Wooccommerce订单中获得了预期值。但第二次,它的价值是一样的,什么都没有改变。

$order是第二个参数,而不是第一个。

您还应该设置挂钩优先级参数的数量

woocommerce_paypal_args钩子定义在:/woocommerce/includes/gateways/paypal/includes/class-wc-gateway-paypal-request.php中。

试试这个:

add_filter( 'woocommerce_paypal_args', 'send_custom_paypal_data', 10, 2 );
function send_custom_paypal_data( $args, $order ) {
error_log( print_r( $args['custom'], true) ); //log variable
$args['custom'] = wp_json_encode(
array(
'field1' => 'some value',
'field2' => 'more values'
)
);

error_log( print_r( $args['custom'], true) ); //log value after updating variable
return $args;
}

代码已经过测试,对我有效。将其添加到活动主题的函数.php中。

日志报告

第一个日志返回:

[10-Apr-2021 08:54:04 UTC] {"order_id":145,"order_key":"wc_order_8FSKEF2hg2UVu"}

第二种:

[10-Apr-2021 08:54:04 UTC] {"field1":"some value","field2":"more values"}

它对我很有效。

如果不起作用

  • 您正在使用WooCommerce插件中包含的PayPal网关,对吧
  • 您是否检查过是否有任何其他函数覆盖您的函数?或者他们有更高的优先级
  • 你是否安装了另一个PayPal插件?在这种情况下,请将其停用

相关答案(使用woocommerce_paypal_args挂钩(

  • 如何在Wooccommerce中动态更改PayPal地址
  • 向Paypal Wooccommerce添加自定义参数
  • 在Woocommerce中只向PayPal发送订单号而不是商品名称

最新更新