Я уже использовал на практике 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);
Быть может у того, что я хочу сделать есть более элегантный способ, в любом случае хотел бы узнать как это можно было бы реализовать.
Вы рассуждаете неправильными категориями. Какая страница? При чём тут вообще страница? Хук 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 );
Допустим, имеется категория Вода (id='500') а в ней есть подразделы
Для системы очередей использую данное расширениеНа сайте стоит Redis движок