Когда сайт начинает слать лишние письма, проблема обычно не в одном месте. Это могут быть уведомления о новых пользователях, сбросе пароля, комментариях, письма от формы обратной связи, WooCommerce-уведомления или сообщения от плагинов, которые вы давно забыли отключить. Если просто выключить весь mail-канал, можно потерять заказы, заявки и системные оповещения. Поэтому задача здесь не «запретить всё», а аккуратно оставить только то, что действительно нужно.
Как понять, кто именно отправляет письма
Сначала нужно не править код вслепую, а определить источник. В WordPress письма обычно уходят через wp_mail(), но вызывают её разные части ядра, темы и плагины. Если у вас есть SMTP-плагин или логирование исходящей почты, это сильно упрощает диагностику: в логах часто видно тему письма, адресата и иногда стек вызова.
Что проверить в первую очередь
- Настройки WordPress > Общие: адрес администратора сайта и e-mail для уведомлений.
- Плагины форм: Contact Form 7, WPForms, Fluent Forms и аналоги.
- WooCommerce: письма о заказах, новых клиентах, возвратах, низком остатке.
- Плагины безопасности, резервного копирования и SEO: они часто шлют служебные уведомления.
- Пользовательские функции в
functions.phpили в mu-plugin, где могли добавитьwp_mail().
Если письма приходят после регистрации, комментария или смены пароля, это уже зона ядра WordPress. Если письма связаны с заказами или формой, искать нужно в настройках конкретного плагина.
Какие письма можно отключить безопасно, а какие лучше оставить
Не все уведомления одинаково полезны. Часть из них можно отключить без последствий для работы сайта, а часть лучше не трогать, если нет альтернативного канала контроля.
| Тип письма | Можно отключить | Риск | Что сделать вместо этого |
|---|---|---|---|
| Уведомления о новых комментариях | Да | Низкий | Проверять комментарии в админке |
| Письма о регистрации новых пользователей | Да, если не нужен ручной контроль | Средний | Оставить уведомление только администраторам |
| Сброс пароля | Обычно нет | Высокий | Не отключать, если на сайте есть авторизация |
| Письма WooCommerce о заказах | Частично | Высокий | Оставить письма о новых заказах и оплате |
| Уведомления плагинов безопасности | Зависит от сценария | Средний | Перенести на другой адрес или канал |
Пошаговое решение: отключаем лишние письма через код
Самый предсказуемый способ — добавить небольшой mu-plugin или код в дочернюю тему. Для точечных отключений лучше использовать фильтры ядра, а не переписывать отправку почты целиком.
1. Отключить письма о комментариях
В WordPress можно убрать уведомления о новых комментариях и комментариях на модерации через фильтры ядра. Это подходит, если вы не хотите получать поток писем с активного блога.
<?php
add_filter( 'notify_post_author', '__return_false' );
add_filter( 'comment_notification_recipients', function( $emails ) {
return array();
} );Первый фильтр отключает уведомление автору записи, второй убирает получателей уведомления о комментариях. Если у вас стоит плагин модерации комментариев, проверьте его настройки отдельно: он может отправлять письма сам.
2. Отключить письмо администратору о новом пользователе
Если на сайте открытая регистрация и вам не нужно получать письмо о каждом новом аккаунте, можно отключить именно это уведомление.
<?php
add_filter( 'wp_send_new_user_notifications', function( $send, $user_id, $notify ) {
if ( 'admin' === $notify ) {
return false;
}
return $send;
}, 10, 3 );Так вы сохраните письмо самому пользователю о создании аккаунта, но уберёте уведомление администратору. Это полезно для сайтов с большим потоком регистраций.
3. Отключить системные письма о смене пароля и e-mail
Если на сайте есть личные кабинеты и пользователи часто меняют данные, можно убрать часть уведомлений. Но делать это стоит только если вы понимаете последствия для поддержки и безопасности.
<?php
add_filter( 'send_password_change_email', '__return_false' );
add_filter( 'send_email_change_email', '__return_false' );Эти фильтры отключают уведомления о смене пароля и e-mail. На корпоративном сайте это иногда оправдано, но для публичного проекта лучше оставить хотя бы одно из уведомлений.
4. Отключить отдельные письма WooCommerce
В WooCommerce письма настраиваются через объект уведомлений. Это удобнее, чем пытаться глушить wp_mail() целиком. Ниже пример, как отключить письмо о новом заказе для конкретного получателя или полностью убрать один тип уведомления через настройки.
<?php
add_filter( 'woocommerce_email_enabled_new_order', '__return_false' );Если нужно не отключать письмо полностью, а изменить адрес получателя, используйте фильтр адресата:
<?php
add_filter( 'woocommerce_email_recipient_new_order', function( $recipient, $order ) {
return 'orders@example.com';
}, 10, 2 );Такой подход лучше, чем отключение всех уведомлений, если вы хотите перенести обработку заказов на отдельный ящик.
Если письма шлёт плагин формы: где искать настройку
У форм обычно есть собственный экран уведомлений. В большинстве случаев не нужен код — достаточно убрать лишнего получателя или отключить второе письмо-уведомление. Например, форма может отправлять письмо и администратору, и пользователю, а вам нужен только один сценарий.
Проверьте:
- поле To или Получатель;
- включён ли автответ пользователю;
- не дублируется ли письмо через SMTP-лог или сторонний webhook;
- не настроены ли несколько уведомлений на одну и ту же форму.
Если плагин не даёт гибко отключить конкретное письмо, тогда уже имеет смысл смотреть в сторону фильтров самого плагина или заменить сценарий на более управляемый.
Проверка результата после внедрения
После изменений не ограничивайтесь тестовой отправкой одной формы. Нужно проверить несколько сценариев, потому что разные письма могут уходить из разных мест.
- Откройте сайт в приватном окне и выполните действие, которое раньше вызывало письмо: комментарий, регистрация, заказ, отправка формы.
- Проверьте лог исходящей почты, если он включён.
- Убедитесь, что нужные письма всё ещё приходят: например, заказ в WooCommerce или письмо сброса пароля.
- Проверьте, не появились ли ошибки PHP после добавления фильтров.
Если у вас есть доступ к серверным логам, полезно посмотреть и их. Иногда письмо не уходит не потому, что его отключили, а потому что сломалась отправка через SMTP или возник конфликт с другим плагином.
Частые ошибки и как их исправить
Отключили не то письмо
Частая ситуация: фильтр сработал, но вы ожидали другое уведомление. Например, в WooCommerce есть несколько писем с похожими названиями. Сначала уточните точное имя уведомления в настройках плагина или в коде.
Добавили код в активную тему, а потом потеряли его после обновления
Если правка лежит в functions.php основной темы, она исчезнет при смене темы. Для таких задач лучше использовать дочернюю тему или mu-plugin в wp-content/mu-plugins/.
Отключили все письма через глобальный фильтр
Иногда пытаются перехватить wp_mail и вернуть false для всех отправок. Это ломает сброс пароля, уведомления о заказах и системные сообщения. Если нужен глобальный контроль, делайте исключения по теме письма, получателю или заголовкам, а не рубите всё подряд.
Плагин всё равно шлёт дубли
Если письмо приходит дважды, проблема может быть не в WordPress, а в двух активных каналах отправки: например, форма отправляет письмо сама, а затем ещё и через webhook. В таком случае отключать нужно один из каналов, а не искать «магический» фильтр в ядре.
Безопасность и производительность: что учесть
Чем меньше лишних уведомлений, тем проще поддержка, но экономить на важных письмах нельзя. Для сайта с заказами и регистрациями лучше настроить отдельный технический ящик, а не пересылать всё на личную почту. Если писем много, используйте SMTP и следите за логами доставки — это помогает быстро понять, что именно перестало уходить после изменений.
Ещё один практический момент: не храните такие правки в случайных сниппетах из интернета. Проверяйте, что фильтр относится именно к нужному сценарию и не затрагивает другие уведомления. Если код нужен на постоянной основе, оформите его как маленький mu-plugin — так он не зависит от темы и не потеряется после обновления.
Если задача сводится не к коду, а к чистке лишних уведомлений и дублей на сайте, иногда проще сначала навести порядок в плагинах и настройках. В таких случаях полезно посмотреть на инструменты вроде Clearfy Pro, но только как на дополнение к ручной диагностике, а не замену понимания источника писем.