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 для управления доступом
15.12.2025
WooCommerce: как правильно настроить иерархию категорий и проблемы с производительностью
17.04.2026
WooCommerce: как исправить не работающий AJAX-фильтр по иерархии категорий
26.05.2026
Как создать иерархию виджетов с поддержкой AJAX в WordPress
05.04.2026
Автоматическое создание иерархии контекста в WordPress с помощью хуков
26.03.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше