Как отключить отправку писем WordPress без удаления плагинов

Владельцы сайтов на WordPress часто сталкиваются с ситуацией, когда необходимо временно или постоянно остановить отправку всех email-сообщений с сайта. Это может быть полезно при тестировании, разработке или решении проблем с рассылкой без риска случайной отправки писем пользователям. В этой статье мы подробно рассмотрим, как отключить email в WordPress без удаления плагинов, с примерами кода и рекомендациями по использованию.

Зачем отключать отправку email в WordPress?

По умолчанию WordPress отправляет различные уведомления: о регистрации пользователей, восстановлении пароля, новых комментариях, заказах в WooCommerce и др. Однако бывают ситуации, когда:

  • Вы тестируете сайт на локальном сервере и не хотите спамить реальных пользователей;
  • Ведется отладка или разработка новых функций, которые вызывают email-уведомления;
  • Проблемы с почтовым сервером требуют приостановить рассылку;
  • Вы хотите временно отключить email без удаления уже настроенных плагинов для рассылки.

Оставлять плагины активными, но при этом блокировать отправку писем поможет повысить гибкость работы и ускорит тестирование.

Способы отключения отправки email в WordPress

Использование фильтра wp_mail

Самый простой и надежный способ — перехватить функцию wp_mail, которая отвечает за отправку писем, и сделать ее заглушкой. Для этого добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wplock_disable_wp_mail( $to, $subject, $message, $headers, $attachments ) {
    // Можно логировать попытки отправки, если нужно
    error_log('Email отключен. Письмо в: ' . print_r($to, true) . ' с темой: ' . $subject);
    // Не отправляем письмо, возвращаем true для успеха
    return true;
}
add_filter( 'wp_mail', 'wplock_disable_wp_mail', 10, 5 );

Однако фильтр wp_mail не всегда легко перехватить напрямую, поэтому лучше использовать фильтр phpmailer_init или полностью переопределить функцию wp_mail().

Переопределение функции wp_mail()

Создайте плагин или добавьте в functions.php такой код, который блокирует отправку:

if ( ! function_exists( 'wp_mail' ) ) {
    function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {
        // Просто логируем и ничего не отправляем
        error_log('wp_mail вызвана, но отправка отключена. Кому: ' . print_r($to, true));
        return true;
    }
}

Этот метод гарантирует, что никакие письма не покинут сервер, даже если плагины пытаются их отправить.

Использование фильтра pre_wp_mail()

Начиная с WordPress 5.5 появился фильтр pre_wp_mail, который позволяет полностью перехватить отправку:

add_filter('pre_wp_mail', 'wplock_prevent_email_sending', 10, 2);
function wplock_prevent_email_sending( $null, $atts ) {
    error_log('Отправка email заблокирована. Тема: ' . $atts['subject']);
    // Возвращаем true, чтобы имитировать успешную отправку
    return true;
}

Этот способ наиболее современный и рекомендуется для новых проектов.

Практические советы и рекомендации

Логирование попыток отправки

Для удобства отладки полезно сохранять информацию о попытках отправки в лог. Это поможет понять, какие письма пытаются уйти, и вовремя обнаружить ошибки.

Отключение email только для определенных плагинов

Если нужно отключить email не полностью, а только для конкретных плагинов, изучите их документацию — многие используют собственные хуки для отправки почты. Пример для WooCommerce:

add_filter( 'woocommerce_email_enabled_customer_processing_order', '__return_false' );
add_filter( 'woocommerce_email_enabled_new_order', '__return_false' );

Так можно selectively отключать только нужные уведомления.

Использование плагина Clearfy для управления email

Если вы используете плагин Clearfy, обратите внимание на настройки оптимизации, где можно отключать системные email и управлять ими без кода.

Как временно отключить email при использовании SMTP-плагинов

Если на сайте настроена отправка почты через SMTP-плагины (например, WP Mail SMTP), отключить отправку можно двумя способами:

  • Временно деактивировать SMTP-плагин;
  • Использовать фильтр wp_mail, чтобы блокировать отправку, как описано выше.

Также можно изменить настройки SMTP, указав несуществующий SMTP-сервер для теста.

Выводы и лучшие практики

Отключение отправки email в WordPress без удаления плагинов — задача, с которой сталкиваются многие разработчики. Лучший способ — использовать фильтр pre_wp_mail или переопределять функцию wp_mail, чтобы полностью перехватить отправку. Это гарантирует, что письма не уйдут, но плагины останутся активными и смогут работать.

Для частичного отключения изучайте документацию плагинов и применяйте их собственные фильтры. Не забывайте логировать попытки отправки для отладки.

Если вы предпочитаете готовые решения, обратите внимание на Clearfy, который поможет управлять письмами без кода.

WooCommerce: установка и настройка ограничений на варианты товаров
23.04.2026
Как автоматизировать обновление контента в WordPress с помощью WPRemark
25.01.2026
Как использовать REST API в WordPress для создания своего плагина
08.12.2025
Как отключить отправку писем WordPress без удаления плагинов
10.02.2026
Как удалить или отключить плагин WordPress: практическое руководство
09.04.2026