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

Диагностика проблемы: автоматические письма WooCommerce при сборках заказа

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

Как выявить нежелательные письма

  • Перейдите в WooCommerce → Настройки → Электронные письма и посмотрите, какие письма активированы.
  • Обратите внимание на письма с триггерами на смену статуса заказа, например «Заказ находится в обработке» или «Заказ завершён».
  • Включите логирование почты (например, плагином WP Mail Logging), чтобы видеть, когда и какие письма отправляются.

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

Чтобы отключить автоматическую отправку писем для определённых статусов заказа, используйте следующий код. Он убирает отправку писем при смене статуса на "в обработке" (processing) и "завершён" (completed), если заказ ещё в процессе поэтапной сборки.

add_filter('woocommerce_email_enabled_customer_processing_order', 'disable_processing_email_for_build', 10, 2);
add_filter('woocommerce_email_enabled_customer_completed_order', 'disable_completed_email_for_build', 10, 2);

function disable_processing_email_for_build($enabled, $order) {
    // Проверяем на флаг поэтапной сборки в метаданных заказа
    if ($order->get_meta('is_build_in_progress') === 'yes') {
        return false; // Отключаем письмо
    }
    return $enabled;
}

function disable_completed_email_for_build($enabled, $order) {
    if ($order->get_meta('is_build_in_progress') === 'yes') {
        return false;
    }
    return $enabled;
}

Чтобы этот код работал, при создании или обновлении заказа нужно ставить метаданные is_build_in_progress в значение yes, пока сборка не завершена.

Добавление мета для заказа в процессе сборки

add_action('woocommerce_new_order', 'set_order_build_flag');
function set_order_build_flag($order_id) {
    $order = wc_get_order($order_id);
    // Устанавливаем флаг, что сборка началась
    $order->update_meta_data('is_build_in_progress', 'yes');
    $order->save();
}

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

  • Создайте тестовый заказ и убедитесь, что статус меняется на "в обработке" или "завершён", но письма не уходят, если мета is_build_in_progress установлена в yes.
  • Уберите или измените значение метаданных на no — письма должны отправляться как обычно.
  • Проверьте логи почты — письма не должны дублироваться или уходить при смене статусов, если сборка в процессе.

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

  • Письма продолжают отправляться, несмотря на фильтр: Проверьте, правильно ли передаётся объект $order в фильтре. В некоторых версиях WooCommerce аргументы могут отличаться. Используйте var_dump($order) для отладки.
  • Метаданные не устанавливаются: Убедитесь, что у вас есть права на изменение заказа, и что метод update_meta_data вызывается до save().
  • Письма отключены для всех заказов: Проверьте логику в функциях, чтобы условие отключения писем срабатывало только при нужном флаге.

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

  • Храните флаги сборки заказа в метаданных (postmeta) — это не нагрузит базу и удобно для кастомных фильтров.
  • Не отключайте глобально все уведомления — это может привести к пропущенным важным сообщениям и ухудшению UX.
  • Для массового обновления статусов и метаданных используйте WP-CLI или собственный скрипт с пакетной обработкой, чтобы избежать таймаутов.

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

МетодОписаниеПлюсыМинусы
Использование фильтров woocommerce_email_enabled_*Отключение письма по условию в PHPГибко, без плагинов, точечноеТребует PHP навыков, нужно правильно передавать параметры
Отключение писем через админку WooCommerceВыключение всех писем определённого типаПросто, не требует кодаНет гибкости, отключает письма всем заказам
Использование плагинов для управления письмамиПлагины с UI для настройки условий отправкиУдобство, расширенные настройкиНагрузка на сайт, зависит от плагина

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматически удалять старые медиафайлы в WordPress: практическое руководство
11.04.2026
Как массово удалить заказы WooCommerce со статусом "Отменен"
07.07.2026
Как массово изменить автора постов в WordPress: практическое руководство
11.02.2026
Как быстро удалить старые вариации продуктов WooCommerce без плагинов
27.06.2026
Как создать собственный шорткод в WordPress: практическое руководство
09.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше