Диагностика задачи: зачем нужен автоматический комментарий к заказу?
В WooCommerce часто требуется фиксировать важные события в истории заказа для удобства менеджеров и клиентов. Например, при смене статуса заказа автоматически добавлять комментарий с пояснением или инструкцией. Это помогает избежать ручного ввода, уменьшить ошибки и улучшить коммуникацию.
Типичные ситуации
- Заказ перешёл в статус "в обработке" — нужно добавить комментарий с информацией о сроках доставки.
- Статус "выполнен" — автоматически добавляем благодарность и сроки гарантии.
- Отмена заказа — комментарий с причиной и дальнейшими действиями.
Пошаговое решение: как реализовать автоматическое добавление комментария при смене статуса заказа
WooCommerce предоставляет хук woocommerce_order_status_changed, который срабатывает при изменении статуса заказа. Используем его для добавления комментария через метод add_order_note.
add_action('woocommerce_order_status_changed', 'auto_add_order_comment_on_status_change', 10, 4);function auto_add_order_comment_on_status_change($order_id, $old_status, $new_status, $order) { if ($new_status === 'processing') { $comment = 'Ваш заказ принят в обработку. Мы свяжемся с вами для подтверждения деталей.'; $order->add_order_note($comment, false); } elseif ($new_status === 'completed') { $comment = 'Спасибо за покупку! Ваш заказ выполнен и отправлен.'; $order->add_order_note($comment, false); } elseif ($new_status === 'cancelled') { $comment = 'Заказ отменён. Если у вас есть вопросы, пожалуйста, свяжитесь с поддержкой.'; $order->add_order_note($comment, false); }}Ключевые моменты:
- Используем 4 аргумента — ID заказа, старый статус, новый статус и объект заказа.
- В метод
add_order_noteвторым параметром передаёмfalse, чтобы комментарий был виден только админам (если нужно клиенту —true). - Добавляем комментарии только для ключевых статусов, чтобы не засорять логи.
Проверка результата после внедрения
Чтобы убедиться, что решение работает:
- Перейдите в админку WordPress → WooCommerce → Заказы.
- Откройте любой заказ и измените его статус на
processing,completedилиcancelled. - Обновите страницу заказа и перейдите в раздел "История заказов" (Order Notes).
- Проверьте, что появился нужный комментарий с вашим текстом.
- Если комментарий не появился, проверьте логи ошибок и убедитесь, что код добавлен в functions.php или в подключаемый плагин.
Частые ошибки и как их исправить
- Комментарий не появляется: Возможно, функция не подключена или сработала с ошибкой. Проверьте правильность копирования кода и наличие синтаксических ошибок.
- Комментарии не видны клиенту: Метод
add_order_noteпринимает второй параметрfalse— комментарий скрыт для клиента. Поставьтеtrue, если хотите, чтобы клиент видел заметку. - Хук срабатывает несколько раз: Проверьте, что код не добавлен в несколько мест и не дублируется.
- Не тот статус: Убедитесь, что сравниваете статусы в нижнем регистре, как в WooCommerce (например, 'processing', а не 'Processing').
Практические советы по безопасности и производительности
- Код добавляйте в дочернюю тему или свой плагин, чтобы избежать потери при обновлениях.
- Избегайте тяжёлых операций внутри хука, так как он срабатывает на каждый статус.
- Если нужно отправлять уведомления клиенту, используйте отдельные функции и очереди для обработки.
- Проверяйте права пользователя, если планируете показывать комментарии клиентам.
Сравнение способов добавления комментариев к заказам
| Метод | Плюсы | Минусы |
|---|---|---|
| Ручное добавление через админку | Просто, без кода | Трабует время, возможны ошибки, не автоматизировано |
Автоматизация через хук woocommerce_order_status_changed | Полная автоматизация, гибкость, легко кастомизировать | Требует навыков разработки |
| Использование плагинов для автоматизации | Удобно, часто есть UI | Может нагружать сайт, ограничена функциональность |