Кастомизация email уведомлений о статусах заказов в WooCommerce

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

Почему стоит кастомизировать email уведомления в WooCommerce

Стандартные письма WooCommerce имеют базовый дизайн и минимальный набор информации. Кастомизация позволяет:

  • Улучшить визуальное оформление писем в соответствии с брендом магазина.
  • Добавить важные детали о заказе или акции для клиента.
  • Изменить тексты уведомлений под специфику бизнеса.
  • Добавить дополнительные поля из заказа или пользовательские данные.

Все это повышает доверие клиентов и улучшает взаимодействие с магазином.

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

WooCommerce использует классы, расположенные в woocommerce/includes/emails/. Каждый тип письма — это отдельный класс-наследник от WC_Email. Чтобы изменить шаблон или поведение письма, можно:

  • Переопределить шаблоны в папке темы (woocommerce/emails/).
  • Создать свой класс email уведомления.
  • Использовать хуки для изменения контента или заголовков.

Переопределение шаблонов email в теме

Самый простой способ изменить внешний вид и содержание — скопировать нужный шаблон из wp-content/plugins/woocommerce/templates/emails/ в wp-content/themes/your-theme/woocommerce/emails/ и отредактировать его.

Например, чтобы изменить письмо "Заказ в обработке", скопируйте customer-processing-order.php и внесите правки в HTML и PHP код.

В шаблонах доступны переменные с информацией о заказе, например, $order. Можно вывести дополнительные поля:

<?php echo $order->get_billing_phone(); ?>

Важно не менять структуру хуков, чтобы WooCommerce корректно обрабатывал письмо.

Добавление собственного поля в email уведомления

Иногда нужно добавить в письмо кастомное поле, например, комментарий клиента или внутреннюю заметку. Сделаем пример с добавлением поля "Номер клиента" из метаданных заказа.

Добавим код в файл functions.php темы или в плагин:

function wporders_add_custom_field_to_email( $order, $sent_to_admin, $plain_text, $email ) {
    if ( ! $sent_to_admin && $email->id === 'customer_processing_order' ) {
        $custom_field = $order->get_meta( '_customer_number' );
        if ( $custom_field ) {
            echo '<p><strong>Номер клиента:</strong> ' . esc_html( $custom_field ) . '</p>';
        }
    }
}
add_action( 'woocommerce_email_after_order_table', 'wporders_add_custom_field_to_email', 10, 4 );

Этот хук добавит поле после таблицы заказа в письме "Заказ в обработке".

Создание собственного типа email уведомлений

Если необходимо полностью контролировать логику и шаблон письма, можно создать собственный класс email. Пример минимального класса:

class WPOrders_Email_Custom_Status extends WC_Email {
    public function __construct() {
        $this->id = 'wporders_custom_status';
        $this->title = 'Пользовательский статус заказа';
        $this->description = 'Отправляет уведомление при кастомном статусе заказа';
        $this->template_html = 'emails/custom-status.php';
        $this->template_plain = 'emails/plain/custom-status.php';
        $this->template_base = plugin_dir_path( __FILE__ ) . 'templates/';

        add_action( 'wporders_trigger_custom_status_notification', array( $this, 'trigger' ), 10, 1 );

        parent::__construct();
    }

    public function trigger( $order_id ) {
        if ( $order_id ) {
            $this->object = wc_get_order( $order_id );
            $this->recipient = $this->object->get_billing_email();
            if ( ! $this->is_enabled() || ! $this->get_recipient() ) {
                return;
            }
            $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
        }
    }

    public function get_content_html() {
        ob_start();
        wc_get_template( $this->template_html, array( 'order' => $this->object ), '', $this->template_base );
        return ob_get_clean();
    }

    public function get_content_plain() {
        ob_start();
        wc_get_template( $this->template_plain, array( 'order' => $this->object ), '', $this->template_base );
        return ob_get_clean();
    }
}

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

do_action( 'wporders_trigger_custom_status_notification', $order_id );

Подробное создание шаблонов и регистрацию класса в WooCommerce выходит за рамки этой статьи, но это основа для расширения.

Использование плагинов для кастомизации email WooCommerce

Если вы не хотите писать код, можно использовать готовые плагины. Например:

  • Clearfy Pro — позволяет оптимизировать и кастомизировать WooCommerce, включая email уведомления.
  • WPRemark — плагин для расширенного управления уведомлениями клиентов и администраторов.

Эти инструменты помогут гибко настраивать письма без глубоких знаний PHP.

Полезные хуки для работы с email уведомлениями WooCommerce

Для кастомизации писем часто используют следующие хуки:

  • woocommerce_email_before_order_table — добавить контент перед таблицей заказа.
  • woocommerce_email_after_order_table — добавить контент после таблицы заказа.
  • woocommerce_email_header и woocommerce_email_footer — изменить шапку и подвал письма.
  • woocommerce_email_subject_customer_processing_order — изменить тему письма.

Пример изменения темы письма:

function wporders_change_email_subject( $subject, $order ) {
    return 'Ваш заказ #' . $order->get_order_number() . ' успешно принят';
}
add_filter( 'woocommerce_email_subject_customer_processing_order', 'wporders_change_email_subject', 10, 2 );

Советы и лучшие практики

При кастомизации email уведомлений важно:

  • Тестировать каждое изменение на рабочем сайте с тестовыми заказами.
  • Сохранять копии оригинальных шаблонов перед изменениями.
  • Использовать дочернюю тему для переопределения шаблонов, чтобы не потерять изменения при обновлении.
  • Минимизировать количество сторонних плагинов, чтобы избежать конфликтов.

Также стоит следить за производительностью — тяжелые шаблоны или слишком большое количество запросов к базе могут замедлить отправку писем.

Автоматизация управления заказами в WooCommerce с помощью hooks и фильтров
18.11.2025
Оптимизация заказов в WordPress WooCommerce: практические советы и примеры кода
01.11.2025
Как сделать удобный фильтрованный список заказов в WordPress без WooCommerce
31.01.2026
Как создать автоматический скрипт для обновления статусов заказов WooCommerce
09.02.2026
Автоматизация создания заказов в WordPress без WooCommerce
16.12.2025