HUSKY - Product Filter for WooCommerce

Jak naprawić paginację WooCommerce pokazującą zbyt wiele stron podczas filtrowania

Jeśli paginacja Twojego WooCommerce wyświetla nieprawidłowe numery stron podczas korzystania z filtrów produktów WOOF (HUSKY), ten poradnik rozwiąże problem.

Problem

Objaw: Podczas filtrowania produktów za pomocą WOOF/HUSKY paginacja pokazuje więcej stron niż faktycznie istnieje.

Przykład:

  • Filtr pokazuje 15 produktów (powinny być 2 strony)
  • Paginacja wyświetla: 1, 2, 3, 4, 5… (5+ stron)
  • Kliknięcie strony 3+ powoduje wyświetlenie pustych wyników lub komunikatu „Nie znaleziono produktów”

Co się dzieje: Paginacja WooCommerce oblicza liczbę stron na podstawie całego katalogu produktów, a nie przefiltrowanych wyników. WOOF filtruje produkty, ale paginacja nie aktualizuje się odpowiednio.

Rozwiązanie

Dodaj ten kod, aby wymusić na paginacji użycie prawidłowej liczby stron z przefiltrowanego zapytania WOOF.

Krok 1: Dodanie kodu

Dodaj go do pliku functions.php swojego motywu potomnego:

/**
 * 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);

Priorytet 999: Zapewnia, że ten kod zostanie wykonany po innych modyfikacjach paginacji.

Krok 2: Wyczyść pamięć podręczną

  1. Wyczyść pamięć podręczną WordPress (jeśli używasz wtyczki cache)
  2. Wyczyść pamięć podręczną przeglądarki (Ctrl+F5)
  3. Przetestuj przefiltrowane wyniki

Krok 3: Weryfikacja

  1. Zastosuj dowolny filtr WOOF (kategoria, cena, atrybuty)
  2. Sprawdź paginację na dole strony
  3. Numery stron powinny teraz odpowiadać faktycznym przefiltrowanym wynikom

Przed naprawą:

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

Po naprawie:

Showing 12 products Pages: 1 2 (correct!)

Jak to działa

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

Co to robi: Sprawdza, czy filtrowanie WOOF jest aktualnie aktywne, szukając parametru wyszukiwania WOOF w adresie URL.

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

Co to robi: Zastępuje całkowitą liczbę stron paginacji WooCommerce rzeczywistą liczbą stron z przefiltrowanego zapytania WordPress.

Dlaczego priorytet 999? Niektóre motywy lub wtyczki modyfikują paginację. Priorytet 999 zapewnia, że ten kod zostanie wykonany jako ostatni i będzie nadrzędny.

 

Rozwiązywanie problemów

Paginacja nadal nie działa poprawnie

Problem: Liczba stron nadal jest nieprawidłowa po dodaniu kodu

Możliwe przyczyny:

  1. Kod nie znajduje się w motywie potomnym
    • Sprawdź, czy edytujesz plik functions.php motywu potomnego
    • Aktualizacje motywu nadrzędnego usuną kod, jeśli nie znajduje się w motywie potomnym
  2. Pamięć podręczna nie została wyczyszczona
    • Wyczyść pamięć podręczną wtyczki WordPress
    • Wyczyść pamięć podręczną serwera (panel hostingowy)
    • Przetestuj w trybie incognito
  3. Motyw nadpisuje paginację
    • Niektóre motywy używają niestandardowych funkcji paginacji
    • Spróbuj zwiększyć priorytet do 9999
    • Sprawdź dokumentację motywu

Rozwiązanie: Zwiększ priorytet, jeśli motyw powoduje konflikt:

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

 

Kiedy ta naprawa jest potrzebna

Ta naprawa jest potrzebna, jeśli:

  • ✅ Używasz WOOF/HUSKY do filtrowania produktów
  • ✅ Paginacja pokazuje więcej stron niż faktycznie istnieje
  • ✅ Kliknięcie wyższych numerów stron nie wyświetla produktów
  • ✅ Liczba przefiltrowanych wyników nie zgadza się z paginacją