Диагностика проблемы: почему сообщения не отправляются автоматически
В WooCommerce по умолчанию настроены базовые email-уведомления покупателям и администраторам. Однако, нередко требуется отправлять кастомные сообщения — например, с дополнительной информацией, промокодами или инструкциями. Если автоматические сообщения не доходят, проблема может быть в:
- Отключенной или некорректно настроенной email-рассылке WooCommerce;
- Конфликтах с плагинами, блокирующими почту;
- Проблемах с сервером или настройками SMTP;
- Отсутствии правильных хуков для запуска отправки;
- Ошибках в коде кастомных функций.
Пошаговое решение: как добавить и настроить автоматическую отправку сообщений
1. Проверяем базовую работу email WooCommerce
В панели WordPress перейдите WooCommerce > Настройки > Email. Отправьте тестовое письмо с помощью кнопки "Отправить тестовое письмо". Если письмо не приходит — проблема на уровне сервера или SMTP.
2. Подключаем SMTP для надежной отправки почты
Установите плагин WP Mail SMTP и настройте его с данными вашего почтового сервера (например, Gmail, Mail.ru или корпоративный SMTP). Это устранит проблемы с отправкой писем.
3. Добавляем кастомную функцию для отправки сообщения после заказа
Используем хук woocommerce_order_status_completed — срабатывает, когда заказ переходит в статус "завершён". Вставьте код в файл functions.php вашей дочерней темы или в мини-плагин:
add_action('woocommerce_order_status_completed', 'send_custom_order_email', 10, 1);
function send_custom_order_email($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
$to = $order->get_billing_email();
$subject = 'Спасибо за ваш заказ! Дополнительная информация';
$headers = array('Content-Type: text/html; charset=UTF-8');
$message = '<p>Здравствуйте, ' . $order->get_billing_first_name() . '!</p>';
$message .= '<p>Спасибо за покупку в нашем магазине. Ваш заказ #' . $order->get_order_number() . ' успешно завершён.</p>';
$message .= '<p>В качестве бонуса используйте промокод <strong>THANKYOU10</strong> при следующем заказе.</p>';
wp_mail($to, $subject, $message, $headers);
}4. Тестируем отправку
Создайте тестовый заказ в магазине и измените его статус вручную на "Завершён" (Completed). Проверьте, получает ли покупатель письмо с кастомным сообщением.
Проверка результата после внедрения
- Заказ должен менять статус на "завершён";
- Покупатель получает кастомное письмо с указанным содержимым;
- Письмо не попадает в спам (проверьте заголовки и корректность SMTP);
- В логах сервера нет ошибок отправки.
Частые ошибки и как их исправить
- Письма не отправляются вообще: проверьте настройки SMTP, отключите плагины, которые могут блокировать почту (например, антивирусные или кеширующие).
- Письма приходят с задержкой или в спам: настройте SPF, DKIM, DMARC записи у домена, используйте проверенные SMTP-серверы.
- Код не срабатывает: убедитесь, что хук
woocommerce_order_status_completedиспользуется правильно, а функция подключена вfunctions.phpбез синтаксических ошибок. - Письмо пустое или некорректное: проверьте HTML-разметку письма, заголовки (
Content-Type), используйте функции WordPress для генерации контента.
Практические советы по безопасности и производительности
- Не вставляйте в письмо чувствительные данные (например, пароли или полные платежные данные).
- Используйте плагин для логирования почты, например WP Mail Logging, чтобы отслеживать отправленные письма и возможные ошибки.
- Для большого количества заказов лучше использовать очередь отправки сообщений и сторонние сервисы (SendGrid, Mailgun), чтобы избежать блокировок хостингом.
- Минимизируйте объем HTML в письмах для быстрой загрузки и совместимости с почтовыми клиентами.
Таблица сравнения способов отправки сообщений в WooCommerce
| Метод | Преимущества | Недостатки |
|---|---|---|
| Стандартные email WooCommerce | Простая настройка, встроено, не требует кода | Ограниченные возможности кастомизации |
| Кастомные функции (wp_mail + хуки) | Полный контроль над содержимым и моментом отправки | Требует навыков программирования, возможны ошибки |
| Плагины для автоматизации (например, AutomateWoo) | Мощные настройки, триггеры, интеграции | Платные, могут нагрузить сайт |