Почему в WooCommerce нужно отключать автоматическую отправку писем
В стандартной конфигурации WooCommerce после оформления заказа клиент и администратор получают уведомления на e-mail. В некоторых случаях это нежелательно: например, если уведомления дублируются через сторонние сервисы, или если магазин на этапе тестирования и не нужно засорять почту.
Диагностика проблемы: как понять, что письма отправляются автоматически
Чтобы проверить, что WooCommerce отправляет письма после оформления заказа, можно сделать тестовый заказ и посмотреть письма на почте, указанной в настройках. Также полезно включить логирование почты, например с помощью плагина WP Mail Logging. Если письма приходят, значит функция отправки работает.
Проверяем, какие письма отправляются
- Зайдите в WooCommerce > Настройки > Электронные письма.
- Просмотрите список уведомлений: Новый заказ, Отмена заказа, Заказ выполнен и т.д.
- Для каждого письма есть кнопка «Управлять», где можно отключить его.
Пошаговое отключение отправки писем через код
Если стандартные настройки не подходят (например, нужно отключить все письма программно или выборочно), используйте следующий код в файле functions.php вашей темы или в кастомном плагине:
add_filter('woocommerce_email_enabled_new_order', '__return_false'); // Отключить письмо админу о новом заказе
add_filter('woocommerce_email_enabled_customer_processing_order', '__return_false'); // Отключить письмо клиенту о новом заказе
add_filter('woocommerce_email_enabled_customer_completed_order', '__return_false'); // Отключить письмо клиенту о выполнении заказа
// Добавьте другие письма по аналогии, если нужноЕсли нужно отключить абсолютно все письма, можно использовать универсальный фильтр:
add_filter('woocommerce_email_enabled', '__return_false');Но будьте осторожны — это блокирует все письма, включая важные уведомления.
Отключение через удаление обработчиков
Иногда можно отключить отправку, удаляя хуки:
function disable_woocommerce_emails() {
remove_action('woocommerce_order_status_pending_to_processing_notification', array(WC()->mailer()->emails['WC_Email_Customer_Processing_Order'], 'trigger'));
remove_action('woocommerce_order_status_pending_to_completed_notification', array(WC()->mailer()->emails['WC_Email_Customer_Completed_Order'], 'trigger'));
}
add_action('init', 'disable_woocommerce_emails');Проверка результата после внедрения
После добавления кода:
- Очистите кеш сайта, если он используется.
- Сделайте тестовый заказ с новой учетной записью или в режиме гостя.
- Проверьте почтовый ящик клиента и администратора — письма должны не приходить.
- Если письма все еще приходят, проверьте правильность вставки кода и отсутствие конфликтов с другими плагинами.
Частые ошибки и способы их исправления
- Код не работает: возможно, код добавлен в неправильный файл или тема обновилась и перезаписала
functions.php. Используйте кастомный плагин для кода. - Письма продолжают приходить: проверьте, нет ли других плагинов, которые отправляют почту напрямую (например, SMTP- или маркетинговые плагины).
- Отключены не все письма: убедитесь, что фильтры применяются к нужным событиям, т.к. WooCommerce использует разные классы писем для разных статусов.
- Ошибка PHP: проверьте синтаксис кода, отсутствие опечаток и правильное использование функций.
Практические советы по безопасности и производительности
- Отключение писем уменьшает нагрузку на SMTP-сервер и снижает риск попадания в спам, если письма не нужны.
- Не отключайте уведомления о проблемах с заказами, чтобы не пропустить важные ошибки.
- Если нужно отправлять письма через сторонний сервис, отключите стандартные письма и настройте интеграцию с помощью API.
Сравнение вариантов отключения писем в WooCommerce
| Метод | Плюсы | Минусы |
|---|---|---|
| Отключение через настройки WooCommerce | Просто, без кода | Ограничено стандартным списком писем |
Фильтры в functions.php | Гибко, выборочно | Требует навыков программирования |
| Удаление хуков | Контроль над отдельными событиями | Сложнее в поддержке, может ломаться после обновлений |
| Использование плагинов SMTP/маркетинга | Поддержка сторонних сервисов | Могут конфликтовать с WooCommerce |