WooCommerce: правильная настройка иерархии атрибутов и фильтров для товаров

|

Почему важна иерархия атрибутов в WooCommerce

Иерархия атрибутов позволяет структурировать товары по уровням, облегчая покупателям навигацию и поиск нужного варианта. Например, для одежды это может быть: Категория > Цвет > Размер. Неправильно настроенная иерархия ведёт к дублированию фильтров, запутанности и снижению конверсии.

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

Для проверки используйте консоль разработчика браузера (F12) и запросы к базе через phpMyAdmin или WP-CLI.

Как правильно создать иерархию атрибутов в WooCommerce

1. Создание родительских и дочерних значений атрибутов

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

Пример: создаём таксономию с иерархическими терминами и связываем её с товарами.

function register_hierarchical_product_attribute() {
    register_taxonomy(
        'pa_material', // slug атрибута
        'product',
        array(
            'hierarchical' => true,
            'label' => 'Материал',
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'material'),
        )
    );
}
add_action('init', 'register_hierarchical_product_attribute', 10);

После регистрации добавьте термины с иерархией через админку: например, Ткань > Хлопок, Ткань > Лен.

2. Присвоение иерархических атрибутов товарам

В редакторе товара выбирайте термины иерархической таксономии. Важно не дублировать значения на разных уровнях.

Настройка фильтров для иерархических атрибутов

Использование плагина для AJAX-фильтрации с поддержкой иерархий

Для корректного отображения иерархии и динамической подгрузки рекомендуем использовать плагин Clearfy Pro или специализированные фильтры с поддержкой родительских-детских связей.

Если хотите реализовать самостоятельно, пример для вывода иерархии с AJAX:

add_action('wp_ajax_filter_products', 'ajax_filter_products');
add_action('wp_ajax_nopriv_filter_products', 'ajax_filter_products');

function ajax_filter_products() {
    $tax_query = array();
    if (!empty($_POST['material_term'])) {
        $material_term = sanitize_text_field($_POST['material_term']);
        $tax_query[] = array(
            'taxonomy' => 'pa_material',
            'field' => 'slug',
            'terms' => $material_term,
            'include_children' => true // ключевой параметр
        );
    }
    $args = array(
        'post_type' => 'product',
        'tax_query' => $tax_query,
    );
    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            wc_get_template_part('content', 'product');
        }
    } else {
        echo '<p>Товары не найдены.</p>';
    }
    wp_die();
}

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

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

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

Сравнение вариантов реализации иерархии фильтров

МетодПлюсыМинусы
Кастомная таксономия с иерархией + WP_QueryПолный контроль, гибкость, отсутствие сторонних плагиновТребует навыков разработки, надо самостоятельно реализовать UI и AJAX
Плагин Clearfy Pro (фильтры с поддержкой иерархий)Готовое решение, быстрая настройка, поддержка AJAXПлатный, ограниченная кастомизация
Стандартные атрибуты WooCommerce без иерархииПростота, совместимостьНет поддержки иерархии, фильтры неудобные при большом количестве значений
Как создать иерархию пользователей с поддержкой REST API в WordPress
05.04.2026
WooCommerce: как исправить проблему с пустой родительской категорией после импорта товаров
11.05.2026
Как создать иерархию таксономий с поддержкой AJAX в WordPress
01.01.2026
Как создать иерархию динамических блоков на странице WordPress
25.02.2026
Как создать динамическую иерархию постов в WordPress: практическое руководство
19.12.2025
×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙