Come correggere la paginazione WooCommerce che mostra troppe pagine con il filtraggio
Se la paginazione del tuo WooCommerce mostra numeri di pagina errati quando utilizzi i filtri prodotto WOOF (HUSKY), questa guida ti aiuterà a risolverlo.
Il problema
Sintomo: Quando filtri i prodotti con WOOF/HUSKY, la paginazione mostra più pagine di quante ne esistano effettivamente.
Esempio:
- Il filtro mostra 15 prodotti (dovrebbero essere 2 pagine)
- La paginazione mostra: 1, 2, 3, 4, 5… (5+ pagine)
- Cliccando sulla pagina 3+ mostra risultati vuoti o "Nessun prodotto trovato"
Cosa sta succedendo: La paginazione di WooCommerce calcola il numero di pagine basandosi sul catalogo prodotti totale, non sui risultati filtrati. WOOF filtra i prodotti, ma la paginazione non si aggiorna di conseguenza.
La soluzione
Aggiungi questo codice per forzare la paginazione a utilizzare il numero di pagine corretto dalla query filtrata di WOOF.
Passo 1: Aggiungi il codice
Aggiungilo al file functions.php del tuo tema figlio:
/**
* 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à 999: Assicura che venga eseguito dopo altre modifiche alla paginazione.
Passo 2: Pulisci la cache
- Pulisci la cache di WordPress (se utilizzi un plugin di cache)
- Pulisci la cache del browser (Ctrl+F5)
- Testa i risultati filtrati
Passo 3: Verifica
- Applica un filtro WOOF qualsiasi (categoria, prezzo, attributi)
- Controlla la paginazione in fondo alla pagina
- I numeri di pagina dovrebbero ora corrispondere ai risultati filtrati effettivi
Prima della correzione:
Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)
Dopo la correzione:
Showing 12 products Pages: 1 2 (correct!)
Come funziona
if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
Cosa fa: Verifica se il filtro WOOF è attualmente attivo cercando il parametro di ricerca di WOOF nell'URL.
$args['total'] = $wp_query->max_num_pages;
Cosa fa: Sovrascrive il totale della paginazione di WooCommerce con il numero effettivo di pagine dalla query di WordPress filtrata.
Perché priorità 999? Alcuni temi o plugin modificano la paginazione. La priorità 999 garantisce che questo codice venga eseguito per ultimo e abbia precedenza.
Risoluzione dei problemi
La paginazione è ancora errata
Problema: Il numero di pagine è ancora errato dopo aver aggiunto il codice
Possibili cause:
- Codice non nel tema figlio
- Verifica di stare modificando il file functions.php del tema figlio
- Gli aggiornamenti del tema genitore cancelleranno il codice se non è nel tema figlio
- Cache non pulita
- Pulisci la cache del plugin di cache di WordPress
- Pulisci la cache del server (pannello di hosting)
- Prova in modalità incognito
- Il tema sovrascrive la paginazione
- Alcuni temi utilizzano funzioni di paginazione personalizzate
- Prova ad aumentare la priorità a 9999
- Controlla la documentazione del tema
Soluzione: Aumenta la priorità in caso di conflitti con il tema:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Quando è necessaria questa correzione
Hai bisogno di questa correzione se:
- ✅ Utilizzi WOOF/HUSKY per il filtraggio dei prodotti
- ✅ La paginazione mostra più pagine di quante ne esistano
- ✅ Cliccando su numeri di pagina alti non vengono mostrati prodotti
- ✅ Il conteggio dei risultati filtrati non corrisponde alla paginazione