过滤 Woocommerce 订单发送的 PayPal 'Custom' 字段
Filtering PayPal 'Custom' Field Sent By Woocommerce Order
我需要在 'Custom' 字段中处理 Woocommerce 发送到 PayPal 的数据。当 Woocommerce 创建订单并发送数据时,可以在
中找到
$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 时,我从 Woocommerce 订单中获得了预期值。但是第二次,它是相同的值,没有任何改变。
$order
is the second parameter and not the first.
你还应该设置钩子优先级和参数的数量。
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;
}
该代码已经过测试并且适用于我。将它添加到您的活动主题 functions.php.
日志报告
第一条日志returns:
[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
挂钩)
我需要在 'Custom' 字段中处理 Woocommerce 发送到 PayPal 的数据。当 Woocommerce 创建订单并发送数据时,可以在
中找到$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 时,我从 Woocommerce 订单中获得了预期值。但是第二次,它是相同的值,没有任何改变。
$order
is the second parameter and not the first.
你还应该设置钩子优先级和参数的数量。
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;
}
该代码已经过测试并且适用于我。将它添加到您的活动主题 functions.php.
日志报告
第一条日志returns:
[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
挂钩)