Описание woocommerce_order_edit_status
— Action
Хук woocommerce_order_edit_status позволяет выполнять действия, когда статус заказа изменяется в WooCommerce. Он срабатывает в админке, когда администратор или менеджер редактирует статус заказа, что позволяет интегрировать дополнительные функции или уведомления в процессе управления заказами
Примеры использования
Пример отправки уведомления по электронной почте при изменении статуса заказа на ‘Завершен’:
add_action('woocommerce_order_edit_status', function($order_id, $old_status, $new_status) {
if ($new_status === 'completed') {
$order = wc_get_order($order_id);
wp_mail('admin@example.com', 'Заказ завершен', 'Заказ #' . $order_id . ' был завершен');
}
}, 10, 3);
Этот код отправляет уведомление администратору, когда заказ завершается
Пример записи изменения статуса заказа в журнал:
add_action('woocommerce_order_edit_status', function($order_id, $old_status, $new_status) {
error_log('Статус заказа #' . $order_id . ' изменён с ' . $old_status . ' на ' . $new_status);
}, 10, 3);
Используя этот код, мы можем отслеживать изменения статусов заказов в журнале ошибок PHP
Пример обновления пользовательских метаданных при изменении статуса заказа:
add_action('woocommerce_order_edit_status', function($order_id, $old_status, $new_status) {
if ($new_status === 'processing') {
update_post_meta($order_id, '_custom_meta_key', 'Обработано');
}
}, 10, 3);
Этот код обновляет пользовательское поле метаданных заказа при изменении статуса на ‘Обработка’
— Лучшие практики
– Использование
Используйте этот хук, когда требуется выполнять дополнительные действия при редактировании статуса заказа, например, отправка уведомлений или запись в журнал
– Производительность
Следите за тем, чтобы действия, выполняемые в хуке, не были ресурсоемкими, чтобы избежать замедления работы админки
– Предупреждения
Убедитесь, что логика в вашем коде не вызывает бесконечных циклов, особенно если вы изменяете статус заказа в ответ на изменения статуса
Альтернативы
Тип: action
Этот хук срабатывает, когда статус заказа изменяется, но может быть вызван как в админке, так и на фронтенде
Используйте его, если вам нужны действия как в админке, так и на фронтенде, например, для уведомления клиентов