Диагностика задачи: зачем нужна автоматическая отправка сообщений после заказа в WooCommerce
Автоматические уведомления клиентам после оформления заказа — ключевой элемент сервиса в интернет-магазине на WooCommerce. Они повышают доверие, информируют о статусе, стимулируют повторные продажи. Стандартные письма WooCommerce покрывают базовые сценарии, но часто требуется расширенная кастомизация: отправка SMS, сообщения в мессенджеры, персонализация контента, задержки, дополнительные условия.
Как настроить отправку кастомных сообщений после заказа в WooCommerce
Использование стандартных хуков WooCommerce для отправки писем
WooCommerce предоставляет хук woocommerce_order_status_completed, который срабатывает, когда заказ переводится в статус "завершен". На его основе можно добавить собственный код отправки письма или интеграции с внешними сервисами.
add_action('woocommerce_order_status_completed', 'send_custom_message_after_order', 10, 1);
function send_custom_message_after_order($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
$to = $order->get_billing_email();
$subject = 'Спасибо за покупку!';
$message = 'Ваш заказ #' . $order->get_order_number() . ' успешно завершен.';
wp_mail($to, $subject, $message);
}Этот код отправит простое письмо после завершения заказа. Можно расширить логику, добавив данные заказа, ссылки, персонализацию.
Отправка SMS или сообщений в мессенджеры
Для интеграции с SMS-шлюзами (например, Twilio, SMS.ru) или Telegram/WhatsApp потребуется API соответствующих сервисов. Ниже пример отправки SMS через sms.ru:
function send_sms_after_order($order_id) {
$order = wc_get_order($order_id);
$phone = $order->get_billing_phone();
if (!$phone) return;
$token = 'ВАШ_API_ТОКЕН';
$message = urlencode('Спасибо за заказ #' . $order->get_order_number());
$url = "https://sms.ru/sms/send?api_id={$token}&to={$phone}&msg={$message}&json=1";
wp_remote_get($url);
}
add_action('woocommerce_order_status_completed', 'send_sms_after_order');Аналогично можно реализовать отправку в Telegram через бота с использованием wp_remote_post.
Пошаговое руководство по внедрению и настройке
- Создайте дочернюю тему или плагин для кастомного кода.
- Подключите функцию отправки письма или сообщения по хуку
woocommerce_order_status_completed. - Если нужен SMS или мессенджер, зарегистрируйтесь в сервисе, получите API ключ.
- Добавьте в функцию API-запросы для отправки сообщений.
- Тестируйте на тестовом заказе, проверяйте логи и входящие сообщения.
Проверка результата после внедрения
- Создайте тестовый заказ с вашим email и телефоном.
- Переведите заказ в статус "завершен" вручную в админке WooCommerce.
- Проверьте входящие письма и/или SMS.
- Отслеживайте логи ошибок в
wp-content/debug.log, если включен WP_DEBUG.
Частые ошибки и их исправление
- Письмо не отправляется: проверьте работу
wp_mail(), настройте SMTP через плагин (например, WP Mail SMTP). - SMS не приходит: проверьте корректность номера, API ключ, баланс аккаунта в SMS-сервисе.
- Сообщения отправляются несколько раз: проверьте, что хук не подключается повторно или не вызывается на другие статусы.
- Сообщение отправляется в неподходящий статус: используйте правильный хук, например,
woocommerce_order_status_completedилиwoocommerce_order_status_processing.
Практические советы по безопасности и производительности
- Используйте nonce и проверяйте права пользователя, если добавляете интерфейс настройки.
- Для отправки сообщений в сторонние сервисы используйте асинхронные запросы через
wp_remote_postс таймаутом, чтобы не замедлять обработку заказа. - Логируйте ошибки API вызовов в отдельный файл для отладки.
- Не храните API ключи в открытом виде в коде — используйте
wp-config.phpили параметры плагина.
Сравнение вариантов реализации автоматических сообщений
| Вариант | Преимущества | Недостатки |
|---|---|---|
| Стандартные email WooCommerce | Простота, нет доп. настроек | Ограниченная кастомизация |
| Кастомный PHP-код на хуках | Гибкость, интеграция с любыми сервисами | Нужно писать и поддерживать код |
| Плагины (например, AutomateWoo) | Удобный интерфейс, множество сценариев | Платные, могут нагружать сервер |