Описание woocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to]
— Action
Хук woocommerce_order_status_$STATUS_TRANSITION[from]_to_$STATUS_TRANSITION[to] позволяет выполнять действия при изменении статуса заказа в WooCommerce. Он срабатывает, когда статус заказа изменяется с одного значения на другое и позволяет выполнять кастомные функции в зависимости от этого изменения
Примеры использования
Пример отправки уведомления по электронной почте при изменении статуса заказа с ‘pending’ на ‘completed’:
add_action('woocommerce_order_status_pending_to_completed', function($order_id, $order) {
$order = wc_get_order($order_id);
$to_email = $order->get_billing_email();
wp_mail($to_email, 'Ваш заказ завершен', 'Спасибо за покупку!');
}, 10, 2);
В этом примере мы отправляем уведомление по электронной почте клиенту при изменении статуса заказа на ‘завершен’.
Пример записи в лог при изменении статуса заказа с ‘on-hold’ на ‘processing’:
add_action('woocommerce_order_status_on-hold_to_processing', function($order_id, $order) {
error_log('Заказ ' . $order_id . ' изменил статус на ' . $order->get_status());
}, 10, 2);
Здесь мы записываем информацию о статусе заказа в лог при его изменении.
Пример изменения статуса заказа в зависимости от условия:
add_action('woocommerce_order_status_completed', function($order_id, $order) {
if ($order->get_total() > 100) {
$order->update_status('refunded');
}
}, 10, 2);
В этом примере, если сумма заказа превышает 100, статус заказа изменяется на ‘возвращен’.
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо выполнить действия на основе изменения статуса заказа, такие как уведомления или обработка данных
– Производительность
Избегайте выполнения тяжелых операций, чтобы не замедлять процесс обработки заказов
– Предупреждения
Убедитесь, что обработчики хуков не содержат ошибок, так как это может привести к неожиданным последствиям для процессов заказа
Альтернативы
Тип: action
Этот хук срабатывает при любом изменении статуса заказа, не ограничиваясь определенными переходами
Используйте его, если нужно отслеживать все изменения статусов заказов, а не только конкретные переходы