Woocommerce_before_pay_action не всегда сохраняет метаданные заказаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Woocommerce_before_pay_action не всегда сохраняет метаданные заказа

Сообщение Anonymous »

У меня есть очень простой плагин пользовательского шлюза, предназначенный для хранения некоторых пассивных данных о заказах Woocommerce, никакой фактической обработки не происходит. Он использует перехватчик woocommerce_before_pay_action для захвата метаданных из пользовательских полей оплаты woocommerce_form_field через $_POST и сохранения их в метаданных заказа следующим образом:

Код: Выделить всё

function save_cash_custom_fields( $order ){
//If this order had been paid for with cash
if( $order->get_payment_method() === 'ms_cash' ){
//If the cash_paid_by field is set
if( isset( $_POST['cash_paid_by'] ) ){
$order->update_meta_data( 'cash_paid_by', sanitize_text_field( $_POST['cash_paid_by'] ) );
}
//If the cash_received_by field is set
if( isset( $_POST['cash_received_by'] ) ){
$order->update_meta_data( 'cash_received_by', sanitize_text_field( $_POST['cash_received_by'] ) );
}
}
add_action( 'woocommerce_before_pay_action', 'save_cash_custom_fields', 10, 1 );
И это работает. Иногда. Это действительно непоследовательно: иногда данные захватываются, а иногда нет, ошибок не отображается, а поля даже не создаются в базе данных в тех случаях, когда это не работает.
Я прошел через функцию и вывел каждый шаг, и она всегда там. Никаких ошибок нигде не регистрируется, транзакция завершается правильно, просто эти метаданные не сохраняются.
Может ли кто-нибудь подсказать, почему это происходит с перебоями? Разве крючок не лучший вариант для этого?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -meta-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»