Хук статуса заказа WooCommerce не срабатывает - PullRequest
1 голос
/ 22 мая 2019

Я использую эту маленькую функцию, чтобы определить, установлен ли ордер на ожидание. Это происходит между страницей оплаты и уведомлением поставщика платежа:

add_action( 'woocommerce_order_status_pending', 'status_pending' );
function status_pending( $related_job ) {
    error_log('Triggered');
}

Проблема в том, что я не получаю никакого журнала ошибок, который показывает мне, что функция работает. Но это становится безумным. Когда я обновляю статус через панель управления с завершенного на ожидающий, появляется журнал. Поэтому я абсолютно не понимаю, почему это не работает во время оформления заказа. Любые рекомендации или идеи, в чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Статус отложенного заказа - это статус по умолчанию для заказов до того, как клиент попадет на платежный шлюз, сразу после создания заказа.

Таким образом, лучший способ - использовать хук после создания заказа, до того, какспособ оплаты:

1) сначала попробуйте хук действия woocommerce_checkout_order_processed (3 аргумента) :

add_action( 'woocommerce_checkout_order_processed', 'order_processed_with_pending_status', 10, 3 );
function order_processed_with_pending_status( $order_id, $posted_data, $order ) {
    error_log('Triggered');
}

2) В качестве альтернативы попробуйте хук действия woocommerce_checkout_update_order_meta (2 аргумента) :

add_action( 'woocommerce_checkout_update_order_meta', 'order_processed_with_pending_status', 10, 2 );
function order_processed_with_pending_status( $order_id, $data ) {
    error_log('Triggered');
}

Оба должны работать…

1 голос
/ 22 мая 2019

Это связано с тем, что ловушка срабатывает только при изменении статуса заказа, а не при создании заказа, есть еще одна ловушка, которую вы можете использовать для обнаружения новых заказов, вы можете использовать идентификатор заказа, чтобы получить объект заказа, который вы можете использовать, чтобы узнать статус заказа:

add_action( 'woocommerce_new_order', 'prefix_new_wc_order',  1, 1  );
function prefix_new_wc_order( $order_id ) {
    $order = new WC_Order( $order_id );

}

Хук выше срабатывает только в процессе оформления заказа, поэтому создание заказов на бэкэнде не сработает.

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