WooCommerce: как отправлять уведомления о заказах по email без плагинов

Диагностика проблемы с отправкой email уведомлений в WooCommerce

Частая ситуация — магазин на WooCommerce перестает отправлять уведомления о новых заказах на email администратора или клиента. Причины могут быть разными: неправильные настройки почты, конфликты с плагинами, проблемы с сервером SMTP или почтовыми функциями PHP.

Для проверки отправки почты используйте следующий тестовый скрипт в корне сайта:

<?php
$to = 'ваш_email@пример.ком';
$subject = 'Тест отправки почты';
$message = 'Если вы получили это письмо, почта работает корректно.';
$headers = 'From: webmaster@вашдомен.ру' . "\r\n" .
    'Reply-To: webmaster@вашдомен.ру' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
    echo 'Почта отправлена успешно';
} else {
    echo 'Ошибка при отправке почты';
}
?>

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

Пошаговое решение: отправка email уведомлений в WooCommerce без плагинов

1. Отключаем конфликтующие фильтры и плагины

Временно деактивируйте все плагины, кроме WooCommerce, и переключитесь на стандартную тему (например, Storefront). Проверьте отправку заказов. Если заработало — ищите конфликт в коде.

2. Реализуем кастомную отправку email для новых заказов

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

add_action('woocommerce_thankyou', 'custom_send_order_email', 10, 1);
function custom_send_order_email($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);
    $to = get_option('admin_email'); // Email администратора
    $subject = 'Новый заказ #' . $order->get_order_number();
    $headers = array('Content-Type: text/html; charset=UTF-8');

    $message = '<h2>Новый заказ на сайте</h2>';
    $message .= '<p>Номер заказа: ' . $order->get_order_number() . '</p>';
    $message .= '<p>Дата: ' . wc_format_datetime($order->get_date_created()) . '</p>';
    $message .= '<p>Сумма: ' . $order->get_formatted_order_total() . '</p>';
    $message .= '<p>Клиент: ' . $order->get_billing_first_name() . ' ' . $order->get_billing_last_name() . '</p>';

    wp_mail($to, $subject, $message, $headers);
}

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

3. Проверяем правильность настроек email WooCommerce

Перейдите в WooCommerce - Настройки - Email. Убедитесь, что включены уведомления, указана правильная почта и шаблоны не повреждены.

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

  • Сделайте тестовый заказ в магазине с реальным email администратора.
  • Проверьте папку «Входящие» и «Спам» на почте администратора.
  • Если письмо пришло, задача решена.
  • Если нет — включите логирование email в WooCommerce. Для этого добавьте в wp-config.php строку define('WP_DEBUG_LOG', true); и проверьте файл wp-content/debug.log на ошибки.

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

  • Письма уходят в Спам — используйте корректные заголовки и SPF/DKIM записи у домена.
  • Почта не отправляется из-за блокировки хостингом — уточните у провайдера, разрешена ли функция mail() или настройте SMTP через wp_mail.
  • Конфликты с плагинами кеширования — отключите кеширование страницы оформления заказа.
  • Некорректный формат письма — убедитесь, что заголовки содержат Content-Type: text/html.

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

  • Не используйте устаревшие SMTP-сервисы с небезопасным подключением.
  • Ограничьте количество отправляемых писем — для массовых рассылок используйте специализированные сервисы.
  • Включите логирование почты на тестовом этапе для мониторинга сбоев.
  • Используйте wp_mail() вместо прямого вызова mail() для совместимости с WordPress.

Сравнение способов отправки уведомлений в WooCommerce

МетодПлюсыМинусы
Стандартные email WooCommerceАвтоматическая отправка, шаблоны, поддержка локализацииЗависит от настроек сервера, иногда сбои
Кастомный хук с wp_mail() (как в статье)Полный контроль над содержимым, легко отладитьНужно писать код, нет визуального редактора шаблонов
Плагины SMTP (WP Mail SMTP и др.)Надежная доставка, логирование, настройка через UIДополнительный плагин, может конфликтовать
WooCommerce: как автоматически очищать корзину и сессии после оформления заказа
03.05.2026
Как установить и настроить Redis кеш в WordPress для ускорения сайта
07.02.2026
Автоматическое удаление товаров в WooCommerce по сроку годности или дате публикации
20.06.2026
Как добавить собственные поля в WordPress без плагинов
10.11.2025
WooCommerce: как отправлять уведомления о заказах по email без плагинов
13.06.2026