Диагностика проблемы с отображением описания атрибутов в WooCommerce
В стандартной установке WooCommerce описание атрибутов товаров не выводится на странице товара. Часто пользователи хотят показать описание для каждого значения атрибута, чтобы лучше информировать покупателей. Если вы добавляете описание в разделе Товары → Свойства, а оно не отображается на сайте, значит, тема или WooCommerce по умолчанию его не выводят.
Для проверки, существует ли описание у атрибута, перейдите в Товары → Свойства, выберите нужный атрибут, затем откройте его термины (значения) и убедитесь, что поле «Описание» заполнено.
Если описание заполнено, но не отображается на сайте, проблема в шаблонах темы или отсутствии кода для вывода.
Как вывести описание атрибута на странице товара: пошаговое решение
1. Проверка используемой темы и шаблонов WooCommerce
Первым делом убедитесь, что тема не переопределяет шаблон single-product/attributes.php без вывода описаний. Проверьте папку темы /woocommerce/single-product/ на наличие этого файла. Если есть, откройте и посмотрите, выводится ли описание атрибутов.
2. Добавление кода для вывода описания атрибута
Для вывода описания каждого значения атрибута на странице товара можно использовать хук woocommerce_product_additional_information, который отвечает за таб с дополнительной информацией. Добавьте следующий код в functions.php дочерней темы или в кастомный плагин:
add_action('woocommerce_product_additional_information', 'show_attribute_descriptions', 25);
function show_attribute_descriptions() {
global $product;
$attributes = $product->get_attributes();
if (empty($attributes)) return;
echo '<div class="attribute-descriptions"><h2>Описание атрибутов</h2>';
foreach ($attributes as $attribute) {
if ($attribute->is_taxonomy()) {
$taxonomy = $attribute->get_name();
$terms = wc_get_product_terms($product->get_id(), $taxonomy, array('fields' => 'all'));
if (!empty($terms)) {
foreach ($terms as $term) {
if (!empty($term->description)) {
echo '<h3>' . esc_html($term->name) . '</h3>';
echo wpautop(wp_kses_post($term->description));
}
}
}
}
}
echo '</div>';
}Этот код выводит блок с описаниями всех терминов атрибутов, связанных с товаром, в табе "Дополнительная информация".
3. Кастомизация вывода и стилизация
Чтобы визуально отделить описания и сделать их читаемыми, добавьте CSS в style.css вашей темы:
.attribute-descriptions { margin-top: 20px; padding: 10px; background: #f9f9f9; border: 1px solid #ddd; }
.attribute-descriptions h2 { font-size: 1.5em; margin-bottom: 10px; }
.attribute-descriptions h3 { font-size: 1.2em; margin-top: 15px; }Проверка результата после внедрения решения
Перейдите на страницу товара с заданными значениями атрибутов, у которых заполнено описание. В табе "Дополнительная информация" должен появиться блок с названиями значений и их описаниями.
Если описания не появились, проверьте:
- Корректность добавления кода в
functions.php(без синтаксических ошибок) - Наличие описаний у терминов атрибутов в админке
- Работу кеша сайта и браузера (очистите при необходимости)
Частые ошибки при выводе описания атрибутов и как их исправить
- Отсутствие описаний у терминов — проверьте, заполнены ли описания в
Товары → Свойства. - Код добавлен в неправильное место — используйте дочернюю тему или кастомный плагин, чтобы не потерять изменения при обновлении.
- Переопределение шаблонов темой — если тема полностью перекрывает таб с атрибутами, необходимо в ней добавить вывод описаний вручную.
- Конфликты с плагинами кеширования — отключите кеширование или исключите страницу товара из кеша для теста.
Практические советы по безопасности и производительности
- Используйте
wp_kses_post()для вывода описаний, чтобы избежать вывода опасного HTML. - Не выводите описания для атрибутов без описаний — это сокращает лишний HTML.
- Кешируйте результат вывода, если сайт с большим количеством товаров и атрибутов, чтобы снизить нагрузку.
- Регулярно обновляйте WooCommerce и тему, чтобы избежать возможных несовместимостей.
Сравнение вариантов решения
| Вариант | Плюсы | Минусы |
|---|---|---|
Добавить код в functions.php | Гибкость, можно кастомизировать вывод | Требует базовых знаний PHP, может потеряться при смене темы |
| Использовать плагин для отображения описаний | Простота установки, не требует кода | Может добавлять лишний функционал и нагрузку |
| Редактировать шаблоны темы | Полный контроль над выводом | Требует знаний шаблонов WooCommerce, обновления темы могут сломать изменения |