Мне нужно манипулировать данными, которые 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
как массив, а не как объект заказа, так правильно. Я посоветовал вам добавить все аргументы в функцию, потому что, как вы видели, действительно есть второй параметр$order
, который является объектом заказа. Во избежание путаницы было бы лучше переименовать переменную$order
, если она используется для доступа к аргументам заказа PayPal, а не к объекту заказа. 11.04.2021