WooCommerce: как автоматически отключить отправку писем по заказам без оплаты

Проблема: нежелательная рассылка писем для неоплаченных заказов

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

Диагностика проблемы

Чтобы определить, что WooCommerce отправляет письма по неоплаченным заказам, выполните следующие шаги:

  • Создайте тестовый заказ с методом оплаты, который не подтверждается автоматически (например, "Оплата при доставке" или "Банковский перевод").
  • Отслеживайте, приходят ли клиенту письма с подтверждением или напоминанием.
  • Проверьте логи почты WordPress (можно использовать плагин WP Mail Logging), чтобы увидеть, какие письма отправляются и при каких статусах заказов.

Если вы видите отправку писем по заказам со статусом pending или on-hold, значит нужно внедрять фильтрацию.

Пошаговое решение: отключение писем по неоплаченным заказам через код

Оптимальный способ — использовать фильтр WooCommerce woocommerce_email_enabled_<email_id>, чтобы отключать отправку писем для заказов с неоплаченным статусом.

Рассмотрим пример для отключения писем, связанных с заказом, если статус заказа pending или failed (т.е. заказ создан, но оплата не прошла):

add_filter('woocommerce_email_enabled_customer_processing_order', 'disable_emails_for_unpaid_orders', 10, 2);
add_filter('woocommerce_email_enabled_customer_completed_order', 'disable_emails_for_unpaid_orders', 10, 2);

function disable_emails_for_unpaid_orders($enabled, $order) {
    if (!is_a($order, 'WC_Order')) {
        return $enabled;
    }
    $status = $order->get_status();
    // Отключаем письма для заказов в статусах pending и failed
    if (in_array($status, ['pending', 'failed'])) {
        return false;
    }
    return $enabled;
}

Здесь мы отключаем отправку писем "Обработка заказа" и "Завершенный заказ" для неоплаченных заказов. Аналогично можно добавить фильтры для других типов писем, если нужно.

Как найти ID письма (email_id) для фильтра

Типы писем в WooCommerce имеют ID, например:

  • customer_processing_order — отправляется, когда заказ переходит в статус "в обработке".
  • customer_completed_order — при переходе в статус "завершен".
  • new_order — уведомление администратору о новом заказе.

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

Проверка результата после внедрения

  • Создайте новый заказ с неоплаченным статусом (например, "Ожидание оплаты").
  • Убедитесь, что клиент не получает писем "Обработка заказа" или "Завершенный заказ".
  • Измените статус заказа на "в обработке" или "завершен" (т.е. оплаченный заказ). Проверьте, что письма отправляются корректно.
  • Используйте лог почты для контроля отправленных писем.

Частые ошибки и как их исправить

  • Ошибка: Письма продолжают отправляться по неоплаченным заказам.
    Причина: Фильтр применён не ко всем email ID, которые отвечают за отправку писем.
    Решение: Добавьте аналогичные фильтры для всех типов писем, которые хотите отключить.
  • Ошибка: Письма не отправляются вообще.
    Причина: Логика фильтра не учитывает правильные статусы или типы писем.
    Решение: Проверьте, что проверка статуса заказов и email ID корректна, используйте error_log() для отладки.
  • Ошибка: Функция не вызывается.
    Причина: Код добавлен не в правильное место или тема/плагин переопределяет поведение.
    Решение: Добавьте код в файл functions.php дочерней темы или в отдельный плагин, отключите кэширование.

Практические советы по безопасности и производительности

  • Код для фильтра не должен выполнять тяжелые операции — только простую проверку статуса.
  • Всегда тестируйте изменения на тестовом сайте, чтобы избежать сбоев в рассылке.
  • Используйте кеширование и минимизируйте количество хуков, чтобы не замедлять сайт.
  • Для масштабных проектов рассмотрите использование специализированных плагинов для контроля email-рассылок, например Clearfy Pro для оптимизации и управления уведомлениями.

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

МетодПреимуществаНедостатки
Код на хуках (как в статье)Легко кастомизировать, не требует сторонних плагинов, полный контрольНеобходим опыт, возможны ошибки при некорректном коде
Плагины управления emailПростота настройки, графический интерфейс, дополнительные функцииЗависимость от стороннего кода, возможные конфликты, нагрузка на сайт
Полное отключение email WooCommerceМинимальная нагрузка, быстроПотеря всех уведомлений, не подходит для большинства сайтов
Отложенный запуск задач в WordPress без Cron: практическое руководство
12.01.2026
Как успешно оптимизировать WordPress для поисковых систем: практические советы
14.11.2025
Как автоматизировать управление контентом в WordPress с помощью WPKPI
29.12.2025
WooCommerce: автоматическое отключение отправки писем по заказам без оплаты
28.06.2026
WooCommerce: массовое обновление цен товаров через код
24.06.2026