Woocommerce - ловушка woocommerce_order_status_pending не вызывает - PullRequest
0 голосов
/ 27 июня 2019


У меня проблемы с проверкой статуса заказа woocommerce.

У меня есть плагин, который я создаю, и мне нужно знать, когда заказ становится «ожидающим», а затем «завершенным».Но все хуки работают только в том случае, если я устанавливаю статус заказа вручную в админке WordPress.

function order_status_changed_clbk( $order_id ){
    ...some code...
}
add_action( 'woocommerce_order_status_pending', 'order_status_changed_clbk' );

1 Ответ

0 голосов
/ 27 июня 2019

ОБНОВЛЕНИЕ

Я обнаружил, что есть небольшая проблема.Если пользователь отменяет платеж, например, в PayPal, он может быть снова перенаправлен на кассу.Теперь предположим, что он повторяет проверку снова.В этом случае ловушка get вызывается во второй раз, что может быть проблематично.Итак, я реализовал себе payment_counter:

add_action ('woocommerce_checkout_order_processed', 'order_status_changed_clbk');function order_status_changed_clbk ($ order_id) {$ payment_counter = (int) get_post_meta ($ order_id, payment_counter ', true);

if ( empty( $payment_counter ) ) {
    update_post_meta( $order_id, 'payment_counter', 1 );
    error_log( 'Function works!' ); //Get's called only once
} else {
    update_post_meta( $order_id, 'payment_counter', ++ $payment_counter ); //Cool thing for statistics maybe, but not really needed
}

}


Возможно, этот хук работает для вас:

function order_status_changed_clbk( $order_id ){
    error_log( 'Function works!' );
}
add_action( 'woocommerce_checkout_order_processed', 'order_status_changed_clbk' );

Я использую его в своем плагине.Если заказ обрабатывается, он также «находится на рассмотрении», поэтому, возможно, это решение, которое вы ищете.

Попробуйте его и проверьте в debug.log Function works!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...