Как отключить автоматическое преобразование HTML в WooCommerce без плагинов

Проблема: автоматическое преобразование HTML в WooCommerce

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

Диагностика проблемы

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

  • Откройте страницу товара в админке и вставьте в описание HTML-код с простыми тегами, например, <div style="color:red;">Текст</div>.
  • Сохраните товар и посмотрите на фронтенде, как отображается описание.
  • Если вы видите <div> в виде текста, а не как HTML-блок, значит происходит экранирование кода.

Другая причина — фильтры WordPress, такие как wp_kses или wpautop, которые автоматически форматируют контент.

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

Шаг 1. Отключаем фильтр wpautop

Функция wpautop автоматически добавляет <p> и <br> в текст. Она часто ломает кастомный HTML.

remove_filter('the_content', 'wpautop');
remove_filter('woocommerce_short_description', 'wpautop');

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

Шаг 2. Отключаем фильтр wp_kses_post для описания товара

WooCommerce и WordPress по умолчанию очищают HTML через wp_kses_post, чтобы защитить от вредоносного кода. Если вы уверены в безопасности HTML, можно отключить этот фильтр.

remove_filter('woocommerce_product_description', 'wp_kses_post');
remove_filter('woocommerce_short_description', 'wp_kses_post');

Обратите внимание, что в WooCommerce фильтры могут называться иначе, например, применяться через the_content или woocommerce_short_description. Проверьте с помощью remove_filter.

Шаг 3. Используем хук woocommerce_product_get_description для вывода чистого HTML

Если предыдущие методы не сработали, можно перехватить получение описания товара и вернуть его без фильтрации:

add_filter('woocommerce_product_get_description', function($description) {
    return $description; // Возвращаем без изменений
}, 99);

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

Чтобы убедиться, что HTML больше не преобразуется:

  • Добавьте в описание товара кастомный HTML, например таблицу или стилизованный блок.
  • Обновите страницу товара на сайте и проверьте, что HTML отобразился корректно (без тегов в виде текста).
  • Проверьте код страницы через браузер (через <inspector>), чтобы убедиться, что теги не экранированы.

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

  • Ничего не изменилось после remove_filter — Возможно, фильтр добавлен плагином с высоким приоритетом. Используйте более высокий приоритет или проверьте, какие фильтры применяются с помощью remove_all_filters('the_content') для диагностики.
  • HTML все равно обрезается — WooCommerce может использовать собственные функции очистки. Проверьте, не включена ли в настройках безопасность, которая блокирует HTML.
  • Отображается пустой блок — Возможно, HTML не сохраняется в базе. Проверьте, что редактор не переключается на визуальный режим, который удаляет теги.

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

  • Отключая фильтры очистки HTML, вы снижаете защиту сайта. Используйте этот подход только если уверены в источнике HTML.
  • Для безопасного добавления кастомного HTML лучше использовать ACF или собственные мета-поля с валидированным содержимым.
  • Используйте wp_kses с кастомным набором разрешённых тегов, если нужна фильтрация без удаления всех HTML.

Сравнение вариантов решения

МетодПлюсыМинусыРекомендации
Удаление wpautopПростое отключение автоматических <p> и <br>Может повлиять на все посты, сломать форматированиеИспользовать выборочно для WooCommerce, с приоритетом
Удаление wp_kses_postПозволяет выводить любой HTMLОпасно с точки зрения безопасностиТолько для доверенного контента
Фильтр woocommerce_product_get_descriptionГибкое управление выводом описанияТребуются знания хуков WooCommerceОптимальный вариант для кастомизации

Чек-лист для отключения автоматического преобразования HTML в WooCommerce

  • Проверить, как выводится HTML в описании товара
  • Добавить remove_filter('the_content', 'wpautop') и проверить результат
  • Добавить remove_filter('woocommerce_short_description', 'wpautop')
  • Отключить фильтрацию wp_kses_post для нужных полей
  • Использовать фильтр woocommerce_product_get_description для чистого вывода
  • Проверить вывод на фронтенде и в инспекторе браузера
  • Убедиться в безопасности вводимого HTML
Как разделить тематические блоки в WordPress с помощью таксономий
19.01.2026
Как создать автоматический импорт визиток в WordPress с помощью REST API
30.03.2026
Как настроить автоматическую работу с сообщениями в WordPress
21.11.2025
Как программно удалить заказы со статусом «Отменён» в WooCommerce
10.05.2026
Как создать динамический favicon в WordPress
03.02.2026