Как использовать WooCommerce api внутри файла function.php

103
20 июня 2019, 12:00

Я уже использовал на практике WooCommerce api на определенной странице. Разобрался с тем как должен выглядеть путь запрос. В случае если страница имеет такой путь https://site.com/page, то мне достаточно сделать такой путь запроса /../products, но как мне быть в том случае, если я не могу быть уверенным в том, какая страница будет открыта? Например: в случае, когда код находится в файле function.php

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

function test_callback($order_id, $old_status, $new_status) {
    if( $new_status == "processing" ) {
        var_dump($woocommerce->get("/orders/$order_id")); //неправильный путь
    }

}
add_action( 'woocommerce_order_status_changed', 'test_callback', 10, 3);

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

Answer 1

Вы рассуждаете неправильными категориями. Какая страница? При чём тут вообще страница? Хук woocommerce_order_status_changed срабатывает при смене статуса заказа. Это может произойти при оплате, при этом вообще никакая страница не открыта! Шлюз банка шлёт HTTP POST-запрос на сайт, этот запрос обрабатывается WooCommerce, и срабатывает хук. Никакого взаимодействия с браузером клиента не происходит. Но хук в functions.php сработает, потому что этот файл загружается всегда.

Чтобы получить доступ к заказу в вашем коде, следует использовать функцию wc_get_order():

function test_callback( $order_id, $old_status, $new_status ) {
    if ( 'processing' === $new_status ) {
        $order = wc_get_order( $order_id );
        // Вы можете использовать var_dump() если смена статуса вызвана вашими действиями
        // или вывести $order в лог-файл, если статус изменяется работой фоновых запросов (в бэкенде)
    }
}
add_action( 'woocommerce_order_status_changed', 'test_callback', 10, 3 );
READ ALSO
Как исключить страницы из условия, в котором заданы страницы?

Как исключить страницы из условия, в котором заданы страницы?

Допустим, имеется категория Вода (id='500') а в ней есть подразделы

117
Как узнать количество задач в очереди

Как узнать количество задач в очереди

Для системы очередей использую данное расширениеНа сайте стоит Redis движок

130
Извлечь содержимое тега href из строки

Извлечь содержимое тега href из строки

Имеется строка в переменной $text:

153
Неправильное присвоение массива в c++

Неправильное присвоение массива в c++

У меня есть следующий код:

104