wordpressa.ru wordpress wordpressa.ru

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

Что такое хук woocommerce_order_status_changed и когда он срабатывает

Хук woocommerce_order_status_changed — это action-хук WooCommerce, который вызывается при изменении статуса заказа. Он передает четыре параметра: ID заказа, старый статус, новый статус и объект заказа WC_Order. Этот хук идеально подходит для запуска автоматических процессов, например, отправки уведомлений, изменения метаданных заказа, интеграции с внешними сервисами и т.п.

Сигнатура хука

do_action( 'woocommerce_order_status_changed', $order_id, $old_status, $new_status, $order );

Диагностика задачи: зачем и как использовать хук для автоматизации

Допустим, нужно автоматически отправлять кастомное письмо клиенту, когда заказ переходит в статус completed, или создавать задачу в CRM при смене статуса на processing. Часто владельцы WooCommerce сталкиваются с задачей добавить такие действия без изменения ядра и плагинов.

Проверить, что хук срабатывает, можно с помощью простого логирования:

add_action('woocommerce_order_status_changed', function($order_id, $old_status, $new_status, $order) {
    error_log("Order #$order_id changed from $old_status to $new_status");
}, 10, 4);

После смены статуса заказа в логах сервера появится запись. Если записи нет — значит хук не сработал, либо код подключен неправильно.

Пошаговое решение: пример автоматизации отправки кастомного письма при смене статуса на completed

  1. Вставьте следующий код в файл functions.php вашей темы или в отдельный плагин:
add_action('woocommerce_order_status_changed', 'send_custom_email_on_completed', 10, 4);
function send_custom_email_on_completed($order_id, $old_status, $new_status, $order) {
    if ($new_status === 'completed') {
        $to = $order->get_billing_email();
        $subject = 'Спасибо за покупку! Ваш заказ завершен';
        $message = 'Здравствуйте, ваш заказ #' . $order_id . ' успешно выполнен.';
        wp_mail($to, $subject, $message);
    }
}
  • Сохраните изменения и сделайте тестовый заказ, переведя его вручную в статус completed.
  • Проверьте почтовый ящик, указанный в заказе — письмо должно прийти.
  • Проверка результата после внедрения

    • Отслеживайте логи PHP для ошибок при отправке почты (например, в error_log или через плагин Debug Bar).
    • Проверьте, что письмо приходит именно при нужной смене статуса, а не при других.
    • Убедитесь, что при смене статуса на что-то другое письмо не отправляется.

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

    • Код не выполняется: Проверьте, что код подключен и активен. Лучше использовать отдельный плагин для кастомных функций, чтобы избежать потери при смене темы.
    • Почта не приходит: Настройте SMTP в WordPress, используйте плагины типа WP Mail SMTP. Проверьте, не блокирует ли почтовый сервер отправку.
    • Неверный статус: Используйте точное сравнение $new_status === 'completed', потому что статусы всегда в нижнем регистре.
    • Параметры хука заданы неверно: Укажите число параметров (4) в add_action, иначе получите ошибку или пропустите параметры.

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

    • Не отправляйте тяжелые запросы (например, к API) напрямую в хук, используйте очередь задач или WP Cron.
    • Фильтруйте и валидируйте данные заказа, не доверяйте входящим параметрам без проверки.
    • Ограничьте права доступа к функции, если вызываете её из других мест.
    • Используйте транзиенты или кэширование для уменьшения нагрузки, если ваша автоматизация требует частых проверок.

    Альтернативы и сравнение методов автоматизации смены статусов

    МетодПреимуществаНедостаткиПример использования
    Хук woocommerce_order_status_changed Гибко, напрямую в коде, полный доступ к объекту заказа Требует программирования, возможна нагрузка при тяжелых операциях Отправка кастомных уведомлений, интеграция с CRM
    Плагины автоматизации (например, AutomateWoo) Графический интерфейс, без кода Часто платные, меньше гибкости Стандартные сценарии уведомлений и действий
    WP-Cron задачи Отложенное выполнение, уменьшение нагрузки Не всегда точное время срабатывания Обработка массовых заказов или периодические проверки
    ×

    AI-плагин

    WPGPT
    Сам создает статьи для вашего сайта WordPress

    SEO и мета-теги

    Парсинг конкурентов

    Изображения

    Комментарии

    Подробнее