Диагностика задачи: изменить вывод категорий товаров в WooCommerce
В стандартной теме WooCommerce категории товаров выводятся определённым образом с помощью шаблонов и хуков. Часто нужно изменить этот вывод — добавить дополнительную информацию, изменить сортировку или отобразить категории по-другому без правки шаблонов.
Как найти и использовать подходящий хук WooCommerce для вывода категорий
WooCommerce использует несколько хуков в шаблонах архивов категорий товаров (product_cat). Основные из них:
woocommerce_before_shop_loop— до списка товаров и категорий;woocommerce_after_shop_loop— после списка;woocommerce_before_subcategoryиwoocommerce_after_subcategory— вокруг вывода каждой категории;woocommerce_shop_loop_subcategory_title— вывод заголовка категории.
Чтобы изменить вывод категорий, например, добавить описание под названием категории, можно использовать хук woocommerce_after_subcategory_title.
Пример: добавить описание категории под названием
add_action('woocommerce_after_subcategory_title', 'custom_category_description', 10);
function custom_category_description($category) {
if ($category && !empty($category->description)) {
echo '<div class="custom-cat-description">' . wp_kses_post($category->description) . '</div>';
}
}Этот код добавит описание категории под заголовком в списке категорий.
Пошаговое решение: заменить оформление категорий с помощью хука
- Создайте дочернюю тему или используйте плагин для пользовательских функций (например, Code Snippets).
- Добавьте приведённый выше код в functions.php или через плагин.
- Очистите кэш сайта и браузера.
- Проверьте страницу архива категорий WooCommerce (
/product-category/slug/).
Как проверить, что решение сработало
- Перейдите в админку WordPress — Товары — Категории и добавьте описание к категории.
- Откройте страницу категории на сайте.
- Под заголовком категории должен появиться текст описания, стилизованный в <div class="custom-cat-description">.
Частые ошибки и как их исправить
- Описание не появляется — убедитесь, что в категории есть описание, и что код подключён правильно (проверьте ошибки PHP).
- Код не срабатывает — проверьте приоритет хука, попробуйте увеличить приоритет, например,
15. - Описание выводится в неверном месте — попробуйте использовать другие хуки:
woocommerce_before_subcategory_titleилиwoocommerce_shop_loop_subcategory_title.
Практические советы по производительности и безопасности
- Используйте
wp_kses_post()для вывода описаний, чтобы не допустить XSS-атак. - Не модифицируйте шаблоны WooCommerce напрямую — используйте хуки для обновляемости.
- Кешируйте страницы архива категорий при высокой нагрузке с помощью плагинов кеширования.
Таблица сравнения способов изменения вывода категорий WooCommerce
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
| Редактирование шаблонов | Правка файлов темы archive-product.php или content-product_cat.php | Максимальный контроль над выводом | Требуется поддержка при обновлениях WooCommerce |
| Использование хуков (пример выше) | Добавление функций через хуки | Безопасно, обновляемо, быстро | Ограничено возможностями хуков |
| Плагины для кастомизации | Плагины визуальной настройки WooCommerce | Просто для новичков | Может замедлять сайт, не всегда гибко |
Дополнительный пример: изменить ссылку категории с помощью фильтра
add_filter('woocommerce_subcategory_link', 'custom_subcategory_link', 10, 2);
function custom_subcategory_link($category_link, $category) {
// Пример: добавить utm-метку для аналитики
return add_query_arg('utm_source', 'expert-review', $category_link);
}Этот код добавит utm-метку ко всем ссылкам категорий на сайте.