Диагностика проблемы: необходимость автоматических действий при изменении статуса заказа
В типичных интернет-магазинах на 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 и внешними системами | Зависимость от внешних сервисов | Интеграция с внешними бизнес-процессами |