В процессе разработки и поддержки сайтов на WordPress иногда возникает необходимость отключить стандартную отправку системных email сообщений. Это может быть полезно, например, при тестировании сайта на локальной машине или при использовании внешних сервисов для рассылки почты. В этой статье мы разберём, как именно можно отключить системные email уведомления WordPress без установки дополнительных плагинов.
Почему стоит отключать системные email WordPress
WordPress по умолчанию отправляет множество различных системных сообщений: уведомления о новых комментариях, смене пароля, регистрации пользователей и другие. В некоторых случаях эти письма могут мешать, т.к. они:
- Засоряют почтовый ящик при тестировании
- Вызывают нежелательные уведомления для пользователей
- Могут конфликтовать с настройками SMTP или внешними почтовыми сервисами
Если вы не хотите полностью отключать отправку почты для всего сайта, а лишь временно или локально — лучше воспользоваться простыми кодовыми решениями.
Основные способы отключения email без плагинов
Для отключения системных email WordPress можно использовать фильтры и переопределение функций. Ниже приведены наиболее популярные методы, которые можно добавить в файл functions.php вашей темы или в отдельный кастомный плагин.
1. Отключение всех системных email через фильтр wp_mail
Фильтр wp_mail позволяет перехватить все вызовы функции отправки почты и при необходимости предотвратить их выполнение. Например, чтобы полностью запретить отправку почты, используйте такой код:
add_filter('wp_mail', 'wpsetup_disable_wp_mail', 10, 1);
function wpsetup_disable_wp_mail($args) {
// Возвращаем false, чтобы отменить отправку
return false;
}Однако такой способ может вызвать ошибки, так как функция wp_mail ожидает массив параметров и возвращает булево значение. Лучше использовать фильтр wp_mail_from или wp_mail_content_type для более избирательного контроля.
2. Отключение отправки почты через фильтр wp_mail_from
Можно подменить адрес отправителя на несуществующий, чтобы письма не доходили до получателей. Это не совсем отключение, но эффективно в некоторых случаях:
add_filter('wp_mail_from', 'wpsetup_disable_mail_from');
function wpsetup_disable_mail_from($original_email_address) {
return 'no-reply@wpsetup.ru'; // несуществующий адрес
}Но этот способ не останавливает отправку, а лишь изменяет адрес отправителя.
3. Использование фильтра wp_mail для отмены отправки по условию
Лучше всего перехватывать функцию wp_mail и отключать отправку только для определённых типов писем. Например, отключим уведомления о смене пароля:
add_filter('wp_mail', 'wpsetup_disable_password_change_email', 10, 1);
function wpsetup_disable_password_change_email($args) {
if (strpos($args['subject'], 'Ваш новый пароль') !== false) {
return false; // отменяем отправку
}
return $args;
}Но к сожалению, фильтр wp_mail не позволяет так просто вернуть false, поэтому лучше использовать хук wp_mail с приоритетом 0 и прерывать отправку через функцию remove_action.
4. Отключение email уведомлений через фильтр send_password_change_email и другие специфичные фильтры
WordPress предоставляет специальные фильтры для отключения отдельных типов уведомлений:
send_password_change_email— отключает уведомления о смене пароляsend_email_change_email— отключает уведомления о смене emailwp_new_user_notification_email— отключает уведомления о новой регистрации
Пример кода для отключения уведомления о смене пароля:
add_filter('send_password_change_email', '__return_false');Это самый безопасный и рекомендуемый способ отключать отдельные уведомления.
Практические примеры отключения популярных уведомлений WordPress
Отключаем уведомления о смене пароля и регистрации
add_filter('send_password_change_email', '__return_false');
add_filter('send_email_change_email', '__return_false');
add_filter('wp_new_user_notification_email', '__return_false');Добавьте этот код в functions.php — и эти уведомления перестанут приходить.
Отключаем уведомления о новых комментариях
Чтобы отключить письма администратору о новых комментариях, добавьте такой код:
add_filter('notify_post_author', '__return_false');
add_filter('comment_notification_recipients', '__return_empty_array');Это позволит избежать лишних писем, если комментарии модерируются или не важны.
Дополнительные советы и рекомендации
Тестирование отключения почты на локальном сервере
Если вы работаете локально и хотите полностью отключить отправку почты, можно использовать dummy SMTP сервер или специальные инструменты, например WPRemark для тестирования email. Это удобнее, чем полностью блокировать почту через код.
Использование плагинов для более гибкого контроля
Если вы всё же решите использовать плагины, обратите внимание на Clearfy Pro, который позволяет отключать системные email и оптимизировать работу сайта без потери функционала.
Заключение
Отключение системных email WordPress без плагинов — задача вполне решаемая с помощью фильтров и хуков, которые предоставляет ядро системы. Самый надёжный и безопасный способ — использовать специальные фильтры для каждого типа уведомлений. Если же нужно полностью отключить отправку почты, можно использовать фильтр wp_mail, но с осторожностью, чтобы не вызвать ошибки.
Для удобства и безопасности часто лучше комбинировать кодовые решения с проверенными плагинами, например, Clearfy Pro или WPRemark.