Изменение текста письма заказа в WooCommerce требует создания дочерней темы. Прямое редактирование файлов плагина приведет к потере изменений после обновления. Стандартный путь лежит через наследование шаблонов: создаем структуру папок, копируем нужный файл и правим его там.
Как изменить шаблон письма заказа WooCommerce через дочерний файл
Чтобы изменить письмо, не нужно лезть в код плагина. Мы используем механизм наследования WordPress: система сначала ищет файл в вашей теме, а если его нет — берет из плагина.
Ваша задача — создать копию файла шаблона внутри папки вашей темы (или дочерней темы) с тем же именем, что и в плагине. После этого вы можете редактировать этот файл как обычный текстовый документ.
Главное правило: файлы должны называться идентично оригиналу. Если в плагине лежит email-order.php, то у вас тоже должен быть email-order.php.
Структура шаблона и ключевые переменные
Файл email-order.php содержит HTML-код письма. Внутри него используются специальные переменные WooCommerce, которые подставляются при отправке.
Основные переменные для вывода данных: {{ order }} (информация о заказе), {{ customer }} (данные клиента), {{ items }} (список товаров).
Эти переменные обрабатываются функцией wc_get_email_order_items(). Она формирует таблицу с товарами, количеством и ценами. Вы можете менять стили этой таблицы или добавлять свои блоки до/после неё.
Важно: не удаляйте эти переменные полностью, иначе письмо придет пустым или с ошибками.
Пошаговая инструкция по созданию и активации дочерней темы
Шаг 1. Создайте папку для вашей темы в директории wp-content/themes/. Назовите её, например, my-child-theme.
Шаг 2. Внутри этой папки создайте файл style.css с заголовком темы (Name, Author, Version). Это обязательный атрибут любой темы WordPress.
Шаг 3. Создайте файл functions.php. В него можно добавить код для регистрации поддержки наследования шаблонов, если он не включен по умолчанию.
Шаг 4. Активируйте тему в админке WordPress (Внешний вид -> Темы).
Шаг 5. Теперь создайте папку templates внутри вашей темы и скопируйте туда файл email-order.php из плагина.
Критерии выбора места для вставки кода (functions.php vs template)
Изменение текста письма всегда делается внутри файла шаблона (email-order.php), а не в functions.php.
Файл functions.php используется для регистрации функций, фильтров и хуков. Там можно изменить логику формирования письма через фильтр woocommerce_email_order_items_format, но это продвинутый метод.
Для новичка проще и надежнее: скопировать файл шаблона и править его вручную. Это дает полный контроль над HTML и стилями без риска сломать логику плагина.
Если вы хотите добавить CSS стили для письма, создайте отдельный файл style.css в папке templates или используйте @import в главном style.css темы.
Типичные ошибки при копировании файлов вручную
Ошибка 1: Копирование файла с другим именем. Система не найдет ваш шаблон и продолжит использовать стандартный из плагина.
Ошибка 2: Удаление оригинального файла в плагине. Никогда не удаляйте файлы из wp-content/plugins/woocommerce/templates/. Обновление плагина сотрет ваши правки, если они лежат там.
Ошибка 3: Забыть про папку templates. Файл email-order.php должен лежать в корне вашей темы или в папке templates. Если вы положите его в wp-content/themes/my-child-theme/templates/email-order.php, это тоже сработает, но путь должен быть корректным относительно корня темы.
Ошибка 4: Игнорирование синтаксиса PHP. Файл шаблона — это смесь HTML и PHP. Не удаляйте теги <?php ?> без понимания их функции.
Ограничения прав доступа и безопасность изменений
Редактирование файлов темы требует прав на запись в папку wp-content/themes/. Обычно у администратора эти права есть.
Если вы используете файл email-order.php, убедитесь, что он не содержит вредоносного кода. Плагин WooCommerce сам проверяет шаблоны на безопасность, но лучше не добавлять eval() или exec() в свои файлы.
Изменения в письмах не влияют на безопасность магазина напрямую, так как письмо отправляется клиенту после проверки данных заказа. Однако, если вы меняете логику обработки заказов внутри шаблона (что делать не рекомендуется), это может создать уязвимости.
Как откатить изменения без потери данных
Если что-то пошло не так, вернитесь к исходному файлу из плагина.
Скопируйте оригинальный email-order.php из wp-content/plugins/woocommerce/templates/ в папку вашей темы.
Затем удалите ваш измененный файл или переименуйте его (например, в email-order-backup.php).
WordPress автоматически подхватит оригинальную версию файла из плагина, и письмо вернется к стандартному виду.
Вопросы и ответы
Можно ли изменить письмо заказа без создания дочерней темы?
Технически можно скопировать файл шаблона прямо в папку плагина, но это плохая практика. При обновлении WooCommerce все ваши правки исчезнут. Лучше использовать тему.
Где найти оригинальный файл email-order.php?
Он находится по пути wp-content/plugins/woocommerce/templates/email-order.php. Откройте его в текстовом редакторе, чтобы скопировать содержимое или структуру папок.
Что делать, если письмо не приходит после изменений?
Проверьте логи ошибок WordPress (Debug.log) и убедитесь, что файл шаблона существует в вашей теме. Также проверьте настройки электронной почты в WooCommerce: Маркетинг -> Электронная почта.


