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

Проблема: массовая рассылка уведомлений после отмены заказа

В WooCommerce по умолчанию при отмене заказа отправляется стандартное письмо покупателю и другим получателям. Иногда это не нужно, например, при автоматическом отменении или если магазин не хочет уведомлять клиента об отмене, чтобы не создавать лишнюю нагрузку на поддержку или не портить впечатление.

Задача — отключить отправку email-уведомлений именно после отмены заказа, сохранив остальные уведомления WooCommerce.

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

Для начала убедитесь, что именно стандартные письма WooCommerce отправляются после изменения статуса заказа на cancelled.

  • Перейдите в WooCommerce > Настройки > Email и найдите уведомление "Отмена заказа".
  • Проверьте, включена ли отправка уведомлений для этого статуса.
  • Если письма приходят, значит, именно этот механизм активен.

Если письма приходят с другими статусами, возможно, нужна более сложная фильтрация.

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

Лучший способ — использовать фильтр WooCommerce, который управляет отправкой email. Это woocommerce_email_enabled_{email_id}. Для отмены заказа email ID — cancelled_order.

Добавьте следующий код в functions.php вашей темы или в отдельный плагин:

add_filter('woocommerce_email_enabled_cancelled_order', 'disable_cancelled_order_email', 10, 2);
function disable_cancelled_order_email($enabled, $order) {
    // Можно добавить дополнительные проверки, например, по способу оплаты или метаданным
    return false; // Отключаем отправку письма отмены заказа
}

Если нужно отключить уведомления для других email-типов, используйте аналогичные фильтры, например:

  • woocommerce_email_enabled_customer_cancelled_order — если есть такой email
  • woocommerce_email_enabled_new_order — для новых заказов и т.д.

Как добавить условие по метаданным заказа

Если отмена производится автоматически и вы хотите отключать письма только в этом случае, можно использовать метаданные заказа:

add_filter('woocommerce_email_enabled_cancelled_order', 'disable_cancelled_order_email_conditional', 10, 2);
function disable_cancelled_order_email_conditional($enabled, $order) {
    if ($order instanceof WC_Order) {
        $auto_cancel = $order->get_meta('_auto_cancel'); // пример мета ключа
        if ($auto_cancel === 'yes') {
            return false;
        }
    }
    return $enabled;
}

В этом примере нужно добавить метаданные _auto_cancel при автоматической отмене заказа.

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

  • Создайте тестовый заказ в WooCommerce.
  • Измените статус заказа на cancelled через админку или программно.
  • Убедитесь, что никаких писем об отмене заказа не отправляется (проверьте почтовый лог, например, через плагин WP Mail Logging).
  • Проверьте, что остальные email-уведомления работают корректно.

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

  • Код не работает, письма всё равно отправляются. Проверьте, что фильтр подключён в functions.php активной темы или плагина и не конфликтует с другими фильтрами.
  • Используется кэш почты или SMTP-сервера. Очистите кэш, проверьте настройки SMTP, иногда письма отправляются вне WordPress.
  • Неверный email ID в фильтре. Используйте правильный ID, например, cancelled_order. Можно посмотреть ID в WooCommerce > Email.
  • Код добавлен, но после обновления темы исчез. Используйте дочернюю тему или плагин для пользовательских функций.

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

  • Не отключайте email уведомления без веской причины, чтобы не потерять важные коммуникации с клиентами.
  • Если автоматизируете отмену заказов, добавляйте метаданные для точной фильтрации писем.
  • Используйте плагины для логирования почты (например, WP Mail Logging), чтобы отследить отправку сообщений и ошибки.
  • Минимизируйте количество кастомных фильтров в functions.php, чтобы не замедлять загрузку сайта.

Сравнение вариантов решения отключения email уведомлений

МетодПлюсыМинусы
Отключение через фильтр woocommerce_email_enabled_cancelled_orderПростой, точечный, не требует плагиновТребует навыков кода, легко забыть при смене темы
Отключение через настройки WooCommerce EmailПросто, не требует кодаОтключает все письма отмены, без условий
Использование плагина для управления письмамиГибкость, UI для настройкиДополнительная нагрузка, зависимость от стороннего ПО
Автоматизация создания резервных копий в WordPress с помощью кода
03.02.2026
WooCommerce: автоматическое удаление отсутствующих вариаций товаров
29.05.2026
Как удалить неактуальные transienty в WordPress и оптимизировать кэш
23.03.2026
Как создать меню в WordPress с помощью хука Wpset
05.11.2025
Как удалить ревизии записей в WordPress без плагинов
14.12.2025