HUSKY - Product Filter for WooCommerce

Как исправить пагинацию WooCommerce, показывающую слишком много страниц при фильтрации

Если нумерация страниц WooCommerce отображает неверные номера страниц при использовании фильтров товаров WOOF (HUSKY), это руководство поможет решить проблему.

Проблема

Симптом: При фильтрации товаров с помощью WOOF/HUSKY нумерация страниц показывает больше страниц, чем существует на самом деле.

Пример:

  • Фильтр показывает 15 товаров (должно быть 2 страницы)
  • Нумерация страниц отображает: 1, 2, 3, 4, 5… (5+ страниц)
  • Нажатие на страницу 3+ показывает пустые результаты или «Товары не найдены»

Что происходит: Нумерация страниц WooCommerce рассчитывает количество страниц на основе всего каталога товаров, а не отфильтрованных результатов. WOOF фильтрует товары, но нумерация страниц не обновляется соответствующим образом.

Решение

Добавьте этот код, чтобы принудительно использовать правильное количество страниц из отфильтрованного запроса WOOF.

Шаг 1: Добавление кода

Добавьте это в свой дочерний шаблон functions.php:

/**
 * Fix pagination page count when using WOOF filtering
 * Forces pagination to use correct max_num_pages from filtered query
 */
add_filter('woocommerce_pagination_args', function($args) {
    global $wp_query, $WOOF;
    
    // Check if WOOF filtering is active
    if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
        // Force correct page count from HUSKY filtered query
        $args['total'] = $wp_query->max_num_pages;
    }
    
    return $args;
}, 999);

Приоритет 999: Гарантирует, что это выполняется после других модификаций нумерации страниц.

Шаг 2: Очистка кеша

  1. Очистите кеш WordPress (если используете плагин кеширования)
  2. Очистите кеш браузера (Ctrl+F5)
  3. Протестируйте отфильтрованные результаты

Шаг 3: Проверка

  1. Примените любой фильтр WOOF (категория, цена, атрибуты)
  2. Проверьте нумерацию страниц внизу страницы
  3. Номера страниц теперь должны соответствовать фактическим отфильтрованным результатам

До исправления:

Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)

После исправления:

Showing 12 products Pages: 1 2 (correct!)

Как это работает

if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {

Что это делает: Проверяет, активен ли в данный момент фильтр WOOF, ища параметр поиска WOOF в URL.

$args['total'] = $wp_query->max_num_pages;

What this does: Перезаписывает общее количество страниц WooCommerce фактическим количеством страниц из отфильтрованного запроса WordPress.

Почему приоритет 999? Некоторые темы или плагины модифицируют нумерацию страниц. Приоритет 999 гарантирует, что этот код будет выполнен последним и получит приоритет.

 

Устранение неполадок

Нумерация страниц все еще неправильная

Проблема: Количество страниц по-прежнему неверно после добавления кода

Возможные причины:

  1. Код не в дочернем шаблоне
    • Убедитесь, что вы редактируете functions.php дочернего шаблона
    • Обновления родительского шаблона удалят код, если он не в дочернем шаблоне
  2. Кеш не очищен
    • Очистите плагин кеширования WordPress
    • Очистите кеш сервера (панель хостинга)
    • Тестируйте в режиме инкогнито
  3. Тема переопределяет нумерацию страниц
    • Некоторые темы используют пользовательские функции нумерации страниц
    • Попробуйте увеличить приоритет до 9999
    • Проверьте документацию темы

Решение: Увеличьте приоритет при конфликтах темы:

add_filter('woocommerce_pagination_args', function($args) {
    // ... code ...
}, 9999); // Higher priority

 

Когда это исправление необходимо

Вам потребуется это исправление, если:

  • ✅ Используется WOOF/HUSKY для фильтрации товаров
  • ✅ Нумерация страниц показывает больше страниц, чем существует
  • ✅ Нажатие на номера страниц с высоким значением не показывает товары
  • ✅ Количество отфильтрованных результатов не совпадает с нумерацией страниц