ловушка woocommerce при размещении заказа через REST API - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно запустить собственный PHP-код, когда заказ размещен в магазине WooCommerce. В настоящее время я использую woocommerce_order_status_changed крючок, который отлично работает для веб-фронта.

add_action('woocommerce_order_status_changed', 'order_confirmation',10, 3);
function order_confirmation($order_id,$oldstatus,$newstatus){  
    //my custom code...
}

Но когда заказ размещается через API, этот хук не вызывается.

Есть ли какой-нибудь хук, который мы можем использовать для выполнения некоторого php-кода при размещении заказа через Rest Api V2 WooCommerce?

1 Ответ

0 голосов
/ 07 мая 2018

Я думаю, вы отправляете свойство set_paid на true. Он устанавливает статус обработки и сокращения складских позиций. если вам необходимо выполнить действие после завершения оплаты заказа, вы можете использовать хук действия woocommerce_payment_complete .

function on_woocommerce_payment_complete($order_id){
}
add_action( 'woocommerce_payment_complete', 'on_woocommerce_payment_complete' 
);`

Однако указанный хук срабатывает только тогда, когда статус заказа был из следующего массива

on-hold', 'pending', 'failed', 'cancelled

до отметки платежа завершено.

Для других статуй ордена срабатывает следующий крюк.

do_action( 'woocommerce_payment_complete_order_status_' . $this->get_status(), $this->get_id() );

Для более подробной информации вы можете проверить

public function payment_complete( $transaction_id = '' ) {

определить в
woocommerce\includes\class-wc-order.php

...