Какой Woocommerce хук при покупке заказа для внешней службы доставки - PullRequest
0 голосов
/ 05 июля 2018

Иногда функция woocommerce_thankyou не вызывается, но иногда работает нормально.

Наш код:

add_action(‘woocommerce_thankyou’, ‘send_order_information_for_delivery’, 999, 1);
function send_order_information_for_delivery($order_id)
{
    $order = wc_get_order($order_id);
    $order_items = $order->get_items();
    // … …
}

Есть идеи, почему иногда не работает?

Основная цель этого метода - получить информацию о заказе на покупку и его товарах и отправить их в другую базу данных через API.

Странно то, что в некоторых заказах метод не вызывается.

1 Ответ

0 голосов
/ 05 июля 2018

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

add_action( 'woocommerce_order_status_changed', 'delivery_information_process', 20, 4 );
function delivery_information_process( $order_id, $old_status, $new_status, $order ){
    // Define the order statuses to check
    $statuses_to_check = array( 'on-hold', 'processing' );

    // Only  "On hold" order status and "Free Shipping" Shipping Method
    if ( $order->get_meta( '_delivery_check', true ) && in_array( $new_status, $statuses_to_check ) )
    {
        // Getting all WC_emails objects
        foreach($order->get_items() as $item_id => $item ){
            $product = $item->get_product();
            $sku     = $product->get_sku();
        }

        ## ==> Process delivery data step

        // Once delivery information is send or processed ==> update '_delivery_check' to avoid repetitions
        $order->update_meta_data( '_delivery_check', true );
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

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