WooCommerce: как исправить ошибку не работающего фильтра по иерархии категорий

|

Диагностика проблемы: почему фильтр категорий не учитывает иерархию

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

Основные симптомы:

Почему так происходит

WooCommerce использует стандартную таксономию product_cat, которая поддерживает иерархии. Однако в запросах и виджетах по умолчанию часто не выставляется параметр include_children или он выставлен неверно. Также некоторые плагины фильтрации неправильно формируют запросы, игнорируя вложенность.

Кроме того, тема или кастомный код могут переопределять параметры запросов, мешая правильной работе фильтра.

Пошаговое решение: как исправить фильтр по иерархии категорий в WooCommerce

1. Проверяем стандартный виджет фильтра по категориям

Перейдите в Внешний вид > Виджеты и найдите виджет Фильтр по категориям товаров. Убедитесь, что в настройках включена опция «Показывать иерархию» (если такая есть). В стандартных версиях WooCommerce это не всегда реализовано, поэтому лучше использовать кастомизацию.

2. Добавляем поддержку иерархии в WP_Query для фильтрации

Если вы используете кастомный запрос для вывода товаров по категориям, необходимо убедиться, что параметр include_children выставлен в true. Пример корректного запроса:

$args = [
    'post_type' => 'product',
    'tax_query' => [
        [
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => 'parent-category-slug',
            'include_children' => true, // обязательно
            'operator' => 'IN',
        ],
    ],
];
$query = new WP_Query($args);

3. Исправляем фильтр через хук pre_get_posts

Чтобы обеспечить корректную фильтрацию в стандартном каталоге и на страницах архива, добавьте следующий код в functions.php вашей темы или в плагин:

add_action('pre_get_posts', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() && is_tax('product_cat') ) {
        $tax_query = $query->get('tax_query');
        if ( ! $tax_query ) {
            $tax_query = [];
        }
        foreach ( $tax_query as &$tax ) {
            if ( isset($tax['taxonomy']) && $tax['taxonomy'] === 'product_cat' ) {
                $tax['include_children'] = true;
            }
        }
        $query->set('tax_query', $tax_query);
    }
});

4. Использование плагина с поддержкой иерархии

Если стандартные инструменты не подходят, рассмотрите плагин Clearfy Pro — он расширяет фильтры WooCommerce и корректно обрабатывает иерархию категорий без дополнительного кода.

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

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

Практические советы по оптимизации и безопасности

Сравнение способов реализации фильтра с поддержкой иерархии

МетодПлюсыМинусыПример
Стандартный виджет WooCommerce Простота, нет кода Не всегда поддерживает вложенность, ограниченная кастомизация Виджет «Фильтр по категориям»
Код с include_children и pre_get_posts Точный контроль, работает в любых условиях Требует знаний PHP, можно ошибиться в коде Пример из статьи
Плагин Clearfy Pro Автоматизация, поддержка Платный, зависит от стороннего разработчика Clearfy Pro
Автоматическое создание иерархии контента в WordPress с помощью WPRemark
01.03.2026
WooCommerce: устранение проблем с автоматическим установлением родительских категорий при импорте товаров
29.05.2026
Как создать иерархию меню в WordPress с подменю и кастомными атрибутами
22.12.2025
WooCommerce: как автоматически установить родительскую категорию при изменении товара
13.07.2026
Как создать иерархию для виджетов WordPress с динамической подгрузкой
28.01.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее