Как использовать хук WooCommerce 'woocommerce_order_status_changed' для отправки дополнительных уведомлений

Диагностика проблемы: почему стандартных уведомлений WooCommerce недостаточно

WooCommerce по умолчанию отправляет уведомления покупателю и администратору при изменении статуса заказа. Однако в ряде случаев требуется отправлять дополнительные уведомления, например, сторонним службам, менеджерам или CRM. Если вы не видите нужных уведомлений или хотите расширить функционал, правильная работа с хуком woocommerce_order_status_changed — ключ к решению.

Пошаговое решение: добавляем дополнительное уведомление на изменение статуса заказа

1. Подключение к хуку

Хук woocommerce_order_status_changed срабатывает при любом изменении статуса заказа и передаёт 4 параметра:

  • $order_id — ID заказа;
  • $old_status — предыдущий статус;
  • $new_status — новый статус;
  • $order — объект WC_Order.

Пример подключения при помощи функции в файле functions.php вашей темы или в собственном плагине:

add_action('woocommerce_order_status_changed', 'send_custom_order_status_notification', 10, 4);
function send_custom_order_status_notification($order_id, $old_status, $new_status, $order) {
    // Логика уведомления здесь
}

2. Логика отправки уведомления

Допустим, необходимо отправить email менеджеру при переходе заказа в статус "processing" (обработка). Пример кода:

function send_custom_order_status_notification($order_id, $old_status, $new_status, $order) {
    if ($new_status === 'processing') {
        $to = 'manager@example.com';
        $subject = 'Новый заказ в обработке №' . $order_id;
        $message = 'Заказ №' . $order_id . ' изменил статус с "' . $old_status . '" на "' . $new_status . '".';
        wp_mail($to, $subject, $message);
    }
}

Как проверить, что уведомление отправляется

  • Включите логирование почты (например, с помощью плагина WP Mail Logging).
  • Сделайте тестовое изменение статуса заказа в админке WooCommerce.
  • Проверьте логи и почтовый ящик менеджера.
  • Для отладки можно добавить error_log() в функцию, чтобы убедиться, что она вызывается.

Частые ошибки и как их исправить

  • Функция не вызывается: проверьте, что хук подключён с правильным количеством аргументов (4).
  • Письма не отправляются: убедитесь, что wp_mail() работает на вашем сервере. Для локальной разработки используйте SMTP-плагин.
  • Неправильный статус: статусы WooCommerce — это короткие строки (например, processing, completed). Проверьте правильность сравнения.
  • Ошибка синтаксиса: используйте IDE или проверяйте код перед загрузкой.

Практические советы по безопасности и производительности

  • Не отправляйте чувствительные данные в письмах без шифрования.
  • Избегайте выполнения тяжёлых операций в функции обработки хука — перенесите их в асинхронные задачи при необходимости.
  • Проверяйте наличие объекта $order и корректность ID, чтобы избежать ошибок.
  • Для массовых уведомлений лучше использовать очередь, чтобы не замедлять работу сайта.

Сравнение способов отправки уведомлений на изменение статуса заказа

МетодПлюсыМинусыПример
Хук woocommerce_order_status_changedГибкость, полный контроль, интеграция с кодомТребует программированияПример кода выше
Плагины для уведомленийУдобство настройки, готовый интерфейсМеньше гибкости, возможны конфликтыClearfy Pro
Вебхуки WooCommerceИнтеграция с внешними сервисамиНастройка требует знаний APIНастройка в WooCommerce > Настройки > Вебхуки

Итоговый чек-лист для внедрения дополнительного уведомления

  • Подключить хук с 4 аргументами.
  • Реализовать проверку нужного статуса.
  • Использовать wp_mail() для отправки письма.
  • Добавить логирование для отладки.
  • Провести тестовое изменение заказа и проверить почту.
  • Обработать возможные ошибки и исключения.
Использование Advanced Custom Fields для создания комплексных форм в WordPress
21.02.2026
Как удалить старые ревизии записей в WordPress для оптимизации базы данных
04.01.2026
WooCommerce: как автоматически удалять неактивных клиентов
24.05.2026
Как использовать Customizer для создания настроек темы WordPress
18.02.2026
Как удалить метаданные из изображений в WordPress для ускорения сайта
14.12.2025