Как отключить отправку писем 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, который поможет управлять письмами без кода.

Как использовать плагин WPRemark для отзывов в WordPress
11.01.2026
Как изменить URL авторского архива в WordPress
13.02.2026
Как защитить WordPress от взлома: эффективные способы и практические примеры
09.11.2025
WooCommerce: как программно изменить статус заказа после оплаты
27.05.2026
Как сделать двойную авторизацию в WordPress без плагинов
18.02.2026