WooCommerce: как автоматически исключить из каталога товары по основному атрибуту

Диагностика задачи: почему нужно исключать товары по атрибуту

В интернет-магазинах на WooCommerce часто требуется скрывать из каталога товары с определёнными характеристиками — например, товары с атрибутом "Состояние" равным "Брак" или с цветом "Черный" для сезонной распродажи. Официальные настройки WooCommerce не позволяют автоматически исключать товары из каталога по атрибутам, а ручное редактирование становится невозможным при большом количестве товаров.

Основная проблема: нужно динамически скрывать товары с определённым значением атрибута без использования тяжёлых плагинов и без нарушения работы фильтров и поиска.

Пошаговое решение: автоматическое исключение товаров с атрибутом из каталога

1. Определяем slug атрибута и значение

Для начала необходимо узнать системный идентификатор (slug) атрибута и его терма. Допустим, атрибут называется pa_condition, а значение для исключения — defective.

2. Добавляем фильтр для исключения товаров

В файл functions.php активной темы или в собственный плагин добавьте следующий код:

add_action('pre_get_posts', function($query) {
    if (is_admin() || !$query->is_main_query()) {
        return;
    }
    // Проверяем, что это каталог WooCommerce
    if ($query->is_post_type_archive('product') || $query->is_tax('product_cat') || $query->is_tax('product_tag')) {
        // Устанавливаем мета-запрос для исключения товаров с атрибутом pa_condition = defective
        $tax_query = (array) $query->get('tax_query');
        $tax_query[] = [
            'taxonomy' => 'pa_condition',
            'field' => 'slug',
            'terms' => ['defective'],
            'operator' => 'NOT IN'
        ];
        $query->set('tax_query', $tax_query);
    }
});

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

3. Тестируем на страницах каталога, категории и поиска

После добавления кода откройте каталог магазина, категории товаров и выполните поиск — товары с атрибутом defective не должны отображаться.

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

  • Перейдите на страницу магазина site.ru/shop и убедитесь, что товары с указанным атрибутом отсутствуют.
  • Откройте категорию, в которой есть такие товары, они не должны показываться.
  • Попробуйте поискать по названию исключённого товара — он также не должен отображаться.

Если товары продолжают отображаться, проверьте, что код добавлен в активную тему или плагин, и что кэш сайта и браузера очищен.

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

  • Неправильный slug атрибута или терма. В WooCommerce атрибуты имеют префикс pa_. Проверьте slug в разделе «Товары → Атрибуты» и в админке терминов.
  • Фильтр не срабатывает на страницах поиска. Поиск WooCommerce — отдельный запрос. Добавьте условие для $query->is_search() в фильтр, если нужно исключать и там.
  • Плагин кэширования мешает. Очистите кэш и отключите временно плагины кэширования при тестах.
  • Код добавлен не в активную тему. Убедитесь, что правите файл functions.php именно активной темы или создайте плагин с этим кодом.

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

  • Используйте таксономии, а не мета-поля для атрибутов, чтобы запросы были быстрее и проще.
  • Минимизируйте количество условий в pre_get_posts, чтобы не создавать лишнюю нагрузку.
  • Проверяйте, что фильтр не применяется в административной части, чтобы не мешать работе редакторов.
  • Храните свои кастомные решения в плагине, а не в теме для удобства поддержки и обновлений.

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

МетодПреимуществаНедостатки
Фильтр pre_get_posts с tax_queryЛёгкий код, быстро работает, не требует сторонних плагиновТребует точного знания slug, может не охватывать все запросы без доработок
Плагин для скрытия товаров по атрибутамПростота настройки через админку, гибкие условияДополнительная нагрузка на сайт, возможные конфликты с другими плагинами
Изменение статуса товара на "черновик"Полное исключение из сайта, не показывается нигдеТребует ручного или автоматического обновления, влияет на отчёты и аналитику

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как автоматизировать удалённую оптимизацию базы данных WordPress
14.02.2026
Как удалить пустые блоки визуального редактора WordPress: практическое решение
29.03.2026
Как автоматически удалять большие файлы в WordPress: практическое решение
09.04.2026
Как создать собственную настройку плагинов WordPress
12.11.2025
WooCommerce: автоматическое изменение цены товара при обновлении заказа
18.05.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее