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

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

В типичных интернет-магазинах на WooCommerce часто возникает задача автоматически выполнять определённые действия при изменении статуса заказа, например, отправлять уведомления, обновлять данные в CRM или запускать внутренние процессы. Без автоматизации это приходится делать вручную или с помощью громоздких плагинов.

Проверить, работает ли у вас автоматизация, можно, наблюдая за реакцией сайта на смену статуса заказа в административной панели WooCommerce. Если действия не выполняются, стоит рассмотреть внедрение хуков.

Основные хуки WooCommerce для работы с заказами

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

  • woocommerce_order_status_{from}_to_{to} — вызывается при смене статуса с {from} на {to}. Например, woocommerce_order_status_pending_to_processing.
  • woocommerce_order_status_changed — универсальный хук с параметрами $order_id, $old_status, $new_status.
  • woocommerce_thankyou — срабатывает после оформления заказа.

Рассмотрим практический пример автоматизации с использованием первого типа хуков.

Пошаговое решение: отправка кастомного письма при смене статуса заказа на «выполнен»

1. Добавляем код в файл functions.php вашей темы или в кастомный плагин

add_action('woocommerce_order_status_processing_to_completed', 'send_custom_email_on_completed', 10, 1);
function send_custom_email_on_completed($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    if (!$order) return;

    $to = $order->get_billing_email();
    $subject = 'Ваш заказ №' . $order->get_order_number() . ' выполнен';
    $message = 'Здравствуйте! Ваш заказ был успешно выполнен. Благодарим за покупку.';
    $headers = array('Content-Type: text/html; charset=UTF-8');

    wp_mail($to, $subject, $message, $headers);
}

2. Проверка работы функции

Оформите тестовый заказ в вашем магазине и переведите его статус вручную из «Обработка» в «Выполнен» в админке WooCommerce. Если письмо приходит на указанный email, значит автоматизация работает.

Проверка результата после внедрения

  • Смена статуса заказа в панели управления.
  • Проверка лога почты (можно использовать плагин WP Mail Logging для отладки).
  • Просмотр email-почты заказчика.

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

  • Почта не отправляется: Проверьте, работает ли функция wp_mail() на вашем хостинге, настройте SMTP через плагин (например, WP Mail SMTP).
  • Хук не срабатывает: Убедитесь, что используете правильный хук для конкретной смены статуса. Статусы должны быть в нижнем регистре без пробелов.
  • Код вставлен в неподходящее место: Добавляйте код в functions.php дочерней темы или в отдельный плагин, чтобы избежать потери при обновлениях.

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

  • Не выполняйте тяжелые операции в хук напрямую — если нужно, запускайте асинхронные задачи через WP-Cron или внешние сервисы.
  • Проверяйте входные данные — $order_id должен быть валидным и заказ существовать.
  • Для сложных уведомлений используйте шаблоны WooCommerce email вместо простого wp_mail().

Сравнение вариантов реализации автоматизации обновлений заказов

СпособПреимуществаНедостаткиКогда использовать
Хуки WooCommerce (код)Быстро, гибко, без сторонних плагиновТребует навыков программированияКонтроль и кастомизация под конкретные задачи
Плагины автоматизации (например, AutomateWoo)Графический интерфейс, множество готовых сценариевДополнительная нагрузка, стоимостьСложные автоматизации без кода
Сторонние сервисы через вебхукиИнтеграция с CRM и внешними системамиЗависимость от внешних сервисовИнтеграция с внешними бизнес-процессами
WooCommerce: автоматическое изменение цены товара при изменении количества
22.06.2026
Как добавить персонализацию на сайт WordPress
03.12.2025
Автоматическое удаление старого медиа-контента в WordPress
09.04.2026
Автоматическое удаление забытых meta-полей в WordPress для оптимизации базы данных
03.04.2026
Как настроить автоматическое сохранение черновиков в WordPress для предотвращения потери данных
07.12.2025