HUSKY - Product Filter for WooCommerce

WooCommerce-Paginierung zeigt zu viele Seiten beim Filtern (Fix)

Wenn Ihre WooCommerce-Paginierung bei der Verwendung von WOOF (HUSKY)-Produktfiltern falsche Seitenzahlen anzeigt, wird diese Anleitung das Problem beheben.

Das Problem

Symptom:Beim Filtern von Produkten mit WOOF/HUSKY zeigt die Paginierung mehr Seiten an, als tatsächlich vorhanden sind.

Beispiel:

  • Filter zeigt 15 Produkte (sollten 2 Seiten umfassen)
  • Paginierungsanzeigen: 1, 2, 3, 4, 5… (5+ Seiten)
  • Wenn Sie auf Seite 3+ klicken, werden leere Ergebnisse oder „Keine Produkte gefunden“ angezeigt.

Was passiert:Die Paginierung von WooCommerce berechnet die Seitenanzahl basierend auf dem gesamten Produktkatalog und nicht auf den gefilterten Ergebnissen. WOOF filtert die Produkte, aber die Paginierung wird nicht entsprechend aktualisiert.

Die Lösung

Fügen Sie diesen Code hinzu, um zu erzwingen, dass die Paginierung die korrekte Seitenanzahl aus der gefilterten WOOF-Abfrage verwendet.

Schritt 1: Code hinzufügen

Fügen Sie dies zu Ihrem Kinderthema hinzufunctions.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);

Priorität 999:Stellt sicher, dass dies nach anderen Paginierungsänderungen ausgeführt wird.

Schritt 2: Cache leeren

  1. WordPress-Cache leeren (bei Verwendung des Cache-Plugins)
  2. Browser-Cache leeren (Strg+F5)
  3. Testen Sie gefilterte Ergebnisse

Schritt 3: Überprüfen

  1. Wenden Sie einen beliebigen WOOF-Filter an (Kategorie, Preis, Attribute).
  2. Überprüfen Sie die Paginierung unten auf der Seite
  3. Die Seitenzahlen sollten nun mit den tatsächlichen gefilterten Ergebnissen übereinstimmen

Vor dem Fix:

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

Nach dem Fix:

Showing 12 products Pages: 1 2 (correct!)

Wie es funktioniert

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

Was das bewirkt:Überprüft, ob die WOOF-Filterung derzeit aktiv ist, indem in der URL nach dem Suchparameter von WOOF gesucht wird.

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

Was das bewirkt:Überschreibt die Paginierungssumme von WooCommerce mit der tatsächlichen Seitenanzahl aus der gefilterten WordPress-Abfrage.

Warum Priorität 999?Einige Themes oder Plugins ändern die Paginierung. Die Priorität 999 stellt sicher, dass dieser Code zuletzt ausgeführt wird und Vorrang hat.

 

Fehlerbehebung

Paginierung immer noch falsch

Problem:Die Seitenanzahl ist nach dem Hinzufügen von Code immer noch falsch

Mögliche Ursachen:

  1. Code nicht im untergeordneten Thema
    • Stellen Sie sicher, dass Sie functions.php des untergeordneten Themes bearbeiten
    • Bei Aktualisierungen des übergeordneten Themes wird der Code gelöscht, wenn dieser nicht im untergeordneten Theme enthalten ist
  2. Cache nicht geleert
    • Löschen Sie das WordPress-Cache-Plugin
    • Server-Cache leeren (Hosting-Panel)
    • Testen Sie im Inkognito-Modus
  3. Das Thema überschreibt die Paginierung
    • Einige Themes verwenden benutzerdefinierte Paginierungsfunktionen
    • Versuchen Sie, die Priorität auf 9999 zu erhöhen
    • Überprüfen Sie die Theme-Dokumentation

Lösung:Bei Themenkonflikten die Priorität erhöhen:

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

 

Wenn dieser Fix benötigt wird

Sie benötigen diesen Fix, wenn:

  • ✅ Verwendung von WOOF/HUSKY zur Produktfilterung
  • ✅ Bei der Paginierung werden mehr Seiten angezeigt, als vorhanden sind
  • ✅ Wenn Sie auf hohe Seitenzahlen klicken, werden keine Produkte angezeigt
  • ✅ Die Anzahl der gefilterten Ergebnisse stimmt nicht mit der Paginierung überein