Wie man die Paginierung korrigiert, die zu viele Seiten mit WOOF-Filterung anzeigt
Wenn Ihre WooCommerce-Paginierung falsche Seitenzahlen anzeigt, wenn Sie WOOF (HUSKY) Produktfilter verwenden, wird dieser Leitfaden 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 an (sollten 2 Seiten sein)
- Paginierung zeigt: 1, 2, 3, 4, 5… (5+ Seiten)
- Klicken auf Seite 3+ zeigt leere Ergebnisse oder „Keine Produkte gefunden“
Was passiert: Die Paginierung von WooCommerce berechnet die Seitenzahl basierend auf dem gesamten Produktkatalog und nicht auf den gefilterten Ergebnissen. WOOF filtert die Produkte, aber die Paginierung aktualisiert sich nicht entsprechend.
Die Lösung
Fügen Sie diesen Code hinzu, um die Paginierung zu zwingen, die richtige Seitenanzahl aus der gefilterten Abfrage von WOOF zu verwenden.
Schritt 1: Code hinzufügen
Fügen Sie dies zu Ihrem Child-Theme hinzu 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);
Priorität 999: Stellt sicher, dass dies nach anderen Paginierungsänderungen ausgeführt wird.
Schritt 2: Cache leeren
- WordPress-Cache löschen (falls ein Cache-Plugin verwendet wird)
- Browser-Cache leeren (Strg+F5)
- Gefilterte Ergebnisse testen
Schritt 3: Überprüfen Sie
- Wenden Sie jeden WOOF-Filter an (Kategorie, Preis, Attribute)
- Überprüfen Sie die Paginierung am unteren Rand der Seite
- Seitenzahlen sollten nun mit den tatsächlichen gefilterten Ergebnissen übereinstimmen
Vor Korrektur:
Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)
Nach der Behebung:
Showing 12 products Pages: 1 2 (correct!)
Funktionsweise
if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
Was dies bewirkt: Prüft, ob die WOOF-Filterung derzeit aktiv ist, indem nach dem WOOF-Suchparameter in der URL gesucht wird.
$args['total'] = $wp_query->max_num_pages;
Was dies bewirkt: Überschreibt die Paginierung von WooCommerce mit der tatsächlichen Seitenanzahl aus der gefilterten WordPress-Abfrage.
Warum Priorität 999? Einige Themes oder Plugins modifizieren die Paginierung. Priorität 999 stellt sicher, dass dieser Code zuletzt ausgeführt wird und Vorrang hat.
Fehlerbehebung
Paginierung immer noch falsch
Problem: Seitenzählung nach dem Hinzufügen von Code immer noch falsch
Mögliche Ursachen:
- Code nicht im Child-Theme
- Stellen Sie sicher, dass Sie die functions.php des Child-Themes bearbeiten
- Updates des übergeordneten Themes überschreiben den Code, wenn er nicht in einem untergeordneten Theme ist
- Cache nicht geleert
- WordPress-Cache-Plugin löschen
- Server-Cache löschen (Hosting-Panel)
- Im Inkognito-Modus testen
- Theme-Überschreibung der Paginierung
- Manche Themes verwenden eigene Paginierungsfunktionen
- Versuchen Sie, die Priorität auf 9999 zu erhöhen
- Überprüfen Sie die Theme-Dokumentation
Lösung: Erhöhen Sie die Priorität bei Theme-Konflikten:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Wann dieser Fix benötigt wird
Du brauchst diese Korrektur, wenn:
- ✅ WOOF/HUSKY für Produktfilterung verwenden
- ✅ Paginierung zeigt mehr Seiten an, als vorhanden sind
- ✅ Klicken auf hohe Seitenzahlen zeigt keine Produkte an
- ✅ Gefilterte Ergebnisseanzahl stimmt nicht mit Paginierung überein