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

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

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

  • Логи почтового сервера (например, через cPanel или SMTP журнал);
  • Стандартный функционал WordPress wp_mail() с тестовой функцией;
  • Настройки WooCommerce в разделе Настройки > Email (включены ли нужные уведомления);
  • Конфликты с темой или плагинами – временно отключите сторонние плагины и переключитесь на дефолтную тему.

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

1. Проверка базового отправителя почты

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

add_action('init', function() {
    if (isset($_GET['test_mail'])) {
        wp_mail('ваш_email@пример.ком', 'Тест почты', 'Проверка отправки почты WordPress');
        exit('Письмо отправлено или попытка отправки выполнена.');
    }
});

Зайдите в браузере на https://ваш-сайт/?test_mail=1 и проверьте почту.

2. Кастомная отправка уведомлений о заказе

WooCommerce использует класс WC_Emails для отправки писем. Можно написать свой хук на событие создания заказа и отправить кастомное письмо:

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 = $order->get_billing_email();
    $subject = 'Ваш заказ #' . $order_id . ' принят';
    $headers = array('Content-Type: text/html; charset=UTF-8');

    $body = '<h1>Спасибо за заказ!</h1>';
    $body .= '<p>Ваш заказ №' . $order_id . ' успешно создан.</p>';
    $body .= '<p>Сумма: ' . $order->get_formatted_order_total() . '</p>';

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

Этот код отправит простое HTML-письмо покупателю после оформления заказа.

3. Отправка уведомления администратору

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

add_action('woocommerce_thankyou', 'custom_send_admin_order_notification', 20, 1);
function custom_send_admin_order_notification($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);

    $to = get_option('admin_email');
    $subject = 'Новый заказ #' . $order_id;
    $headers = array('Content-Type: text/html; charset=UTF-8');

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

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

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

  • Оформите тестовый заказ на сайте;
  • Проверьте почту покупателя и администратора;
  • Если письма не пришли, проверьте логи сервера, спам-папку, и включены ли email-уведомления в WooCommerce;
  • Тестируйте отключая сторонние плагины, чтобы исключить конфликты.

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

  • Письма не отправляются – проблема с почтовым сервером, настройками SMTP или блокировкой хостингом. Используйте SMTP через wp_mail (например, через phpmailer_init), либо настройте внешний SMTP-сервер.
  • Письма попадают в спам – проверьте SPF, DKIM, DMARC записи вашего домена, используйте HTML-шаблоны с корректными заголовками.
  • Конфликты с другими плагинами – отключайте плагины один за другим, чтобы выявить источник проблемы.
  • Неправильные хуки – используйте хуки, рекомендованные в официальной документации WooCommerce (woocommerce_thankyou, woocommerce_order_status_completed и т.д.).

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

  • Не отправляйте письма с большого объёма данных напрямую, формируйте краткие и информативные письма.
  • Используйте транспорт SMTP с аутентификацией для надёжной доставки.
  • При необходимости добавляйте задержки или очереди отправки писем, чтобы избежать блокировок хостинга.
  • Проверяйте и валидируйте email-адреса перед отправкой, чтобы избежать ошибок.

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

МетодПреимуществаНедостаткиКомпромисс
Стандартные email WooCommerceПростота использования, встроена в ядроМало настроек, возможны конфликтыИспользовать при стандартных требованиях
Кастомные хук-функции (код)Гибкость, можно полностью контролировать контент и отправкуТребует навыков разработки и тестированияОптимально для уникальных сценариев
Плагины SMTP и уведомленийУпрощают настройку SMTP, расширяют функционалДополнительная нагрузка, возможны конфликтыИспользовать, если стандартные методы не работают
Как создать автоматический отчет о проблемах с безопасностью в WordPress
04.03.2026
WooCommerce: как автоматически удалять заказ после отмены платежа
27.05.2026
WooCommerce: как автоматически удалять заказы после отмены платежа
17.06.2026
Как использовать WP-Cron для автоматизации задач в WordPress: практические примеры
25.04.2026
Как создать динамические формы в WordPress с помощью WPRemark
16.02.2026