Як виправити відображення нумерації сторінок з великою кількістю сторінок за допомогою фільтрації WOOF
Якщо ваша пагінація 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: Очистити кеш
- Очистити кеш WordPress (якщо використовується плагін кешування)
- Очистити кеш браузера (Ctrl+F5)
- Тестування відфільтрованих результатів
Крок 3: Перевірка
- Застосувати будь-який фільтр WOOF (категорія, ціна, атрибути)
- Перевірте пагінацію внизу сторінки
- Номери сторінок тепер повинні відповідати фактичним відфільтрованим результатам
До виправлення:
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;
Що це робить: Перевизначає загальну кількість сторінок WooCommerce фактичною кількістю сторінок із відфільтрованого запиту WordPress.
Чому пріоритет 999? Деякі теми або плагіни змінюють пагінацію. Пріоритет 999 гарантує, що цей код буде виконано останнім і матиме перевагу.
Виправлення проблем
Пагінація все ще неправильна
Проблема: Кількість сторінок все ще некоректна після додавання коду
Можливі причини:
- Код не в дочірній темі
- Переконайтеся, що ви редагуєте functions.php дочірньої теми
- Оновлення батьківської теми видалить код, якщо він не в дочірній темі
- Кеш не очищено
- Очистіть плагін кешу WordPress
- Очистити кеш сервера (панель хостингу)
- Тест у режимі інкогніто
- Перевизначення пагінації теми
- Деякі теми використовують власні функції пагінації
- Спробуйте збільшити пріоритет до 9999
- Перевірте документацію теми
Рішення: Збільшити пріоритет при конфліктах теми:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Коли потрібне це виправлення
Вам потрібне це виправлення, якщо:
- ✅ Використання WOOF/HUSKY для фільтрації товарів
- ✅ Пагінація показує більше сторінок, ніж існує
- ✅ Клацання на високих номерах сторінок не показує продуктів
- ✅ Кількість відфільтрованих результатів не відповідає пагінації