Почему в WooCommerce не отображаются товары при фильтрации и как это исправить

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

Пользователь пытается отфильтровать товары по атрибутам, категориям или цене, но в результате отображается пустая страница или сообщение «Нет товаров». Такая ситуация часто встречается при кастомизации темы, конфликте плагинов или ошибках в настройках фильтров.

Основные причины, из-за которых фильтрация не работает

  • Кэширование страниц без учета параметров фильтрации;
  • Конфликты с плагинами, добавляющими собственные фильтры;
  • Ошибки в URL-параметрах или правилах перезаписи (rewrite rules);
  • Неправильные настройки атрибутов товаров (например, атрибуты не используются в фильтрах);
  • Кастомный код, который изменяет запросы WooCommerce без учета фильтров.

Пошаговое решение проблемы

1. Очистка и сброс кэша

Если на сайте используется кэширование (плагины типа WP Super Cache, W3 Total Cache, LiteSpeed Cache, а также серверное кэширование), необходимо:

  • Очистить весь кэш;
  • Отключить кэширование для страниц с фильтрами (обычно URL с GET-параметрами);
  • Проверить работу фильтров в режиме инкогнито или на другом браузере.

2. Проверка конфликтов с плагинами

Для исключения конфликтов:

  1. Временно отключите все плагины, кроме WooCommerce;
  2. Проверьте работу фильтров;
  3. Постепенно включайте плагины, отслеживая момент возникновения проблемы;
  4. Обратите внимание на плагины, добавляющие фильтры или изменяющие запрос товаров.

3. Проверка и восстановление правил перезаписи (rewrite rules)

Иногда проблемы с фильтрами связаны с некорректными правилами перезаписи:

  1. Перейдите в Настройки » Постоянные ссылки в админке WordPress;
  2. Нажмите «Сохранить изменения» без изменения настроек — это обновит правила;
  3. Проверьте фильтры снова.

4. Проверка корректности атрибутов товаров

Убедитесь, что атрибуты товаров:

  • Созданы как глобальные атрибуты (WooCommerce » Товары » Атрибуты);
  • Назначены товарам и опубликованы;
  • Используются в виджетах или шорткодах фильтров.

5. Анализ кастомного кода (functions.php или плагинов)

Проверьте, нет ли фильтров или действий, изменяющих WP_Query для товаров. Например, код, который перезаписывает запрос, может игнорировать параметры фильтра:

add_action('pre_get_posts', 'custom_modify_product_query');
function custom_modify_product_query($query) {
    if (is_admin() || !$query->is_main_query()) return;
    if (is_shop() || is_product_taxonomy()) {
        // Возможно, здесь забыли учитывать параметры фильтра
        $query->set('meta_query', array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        ));
    }
}

Если есть подобный код, убедитесь, что он корректно учитывает $_GET параметры фильтров или временно отключите для проверки.

Проверка результата

После внедрения изменений:

  • Перейдите на страницу каталога или магазина;
  • Выберите фильтры (по цене, атрибутам, категориям);
  • Проверьте, что товары отображаются корректно и соответствуют выбранным условиям;
  • Используйте инструменты разработчика браузера или плагины отладки WP_Query (например, Query Monitor), чтобы увидеть текущие параметры запроса.

Типичные ошибки и способы их устранения

  • Неочищенный кэш: фильтры показывают старые данные или пустые страницы. Решение: очистить кэш и настроить его исключения.
  • Неправильные атрибуты: атрибуты созданы как пользовательские, а не глобальные, из-за чего фильтры не работают. Решение: создавать и использовать глобальные атрибуты WooCommerce.
  • Код, ломающий запрос: кастомные фильтры/функции без учета параметров фильтрации. Решение: отладить и поправить логику в pre_get_posts.
  • Ошибки в rewrite rules: перманентные ссылки не обновлены после изменений. Решение: сохранить настройки постоянных ссылок заново.

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

  • Избегайте тяжелых запросов с множественными meta_query и tax_query без индексации базы данных;
  • Используйте плагины фильтрации с нативной поддержкой AJAX, чтобы избежать перезагрузки страниц и не нагружать сервер;
  • Настраивайте исключения кэширования для страниц с фильтрами, чтобы пользователи видели актуальные данные;
  • Проверяйте права доступа к товарам — не показывайте скрытые товары в фильтрах.

Сравнение способов исправления проблемы с фильтрацией WooCommerce

МетодОписаниеПлюсыМинусы
Очистка и настройка кэшаОчищаем и исключаем из кэширования URL с фильтрамиБыстрое решение, не требует кодаМожет увеличить нагрузку на сервер
Проверка и исправление rewrite rulesОбновление правил перезаписи ссылокИсправляет ошибки URL фильтровТребует админ-доступа и понимания структуры
Отладка кастомного кодаИсправление WP_Query в pre_get_postsПолный контроль над запросамиТребует знаний PHP и WP API
Как создать и использовать собственные виджеты в WordPress
07.11.2025
Как автоматизировать управление пользовательскими ролями в WordPress: практические решения и примеры кода
03.03.2026
Как создать внешние таблицы в WordPress с помощью shortcode
24.01.2026
Как настроить отзывы в WordPress с оценками и модерацией
18.02.2026
WooCommerce: как использовать хуки для дополнительного отображения информации в корзине
26.06.2026