Cómo solucionar la paginación de WooCommerce que muestra demasiadas páginas con filtrado
Si la paginación de WooCommerce muestra números de página incorrectos al usar los filtros de productos WOOF (HUSKY), esta guía lo solucionará.
El problema
Síntoma: Al filtrar productos con WOOF/HUSKY, la paginación muestra más páginas de las que realmente existen.
Ejemplo:
- El filtro muestra 15 productos (deberían ser 2 páginas)
- La paginación muestra: 1, 2, 3, 4, 5… (más de 5 páginas)
- Hacer clic en la página 3+ muestra resultados vacíos o “No se encontraron productos”
Lo que sucede: La paginación de WooCommerce calcula el número de páginas basándose en el catálogo total de productos, no en los resultados filtrados. WOOF filtra los productos, pero la paginación no se actualiza en consecuencia.
La solución
Añade este código para forzar a la paginación a usar el número de páginas correcto desde la consulta filtrada de WOOF.
Paso 1: Añadir el código
Añade esto al functions.php de tu tema hijo:
/**
* 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);
Prioridad 999: Asegura que esto se ejecute después de otras modificaciones de paginación.
Paso 2: Limpiar la caché
- Limpia la caché de WordPress (si usas un plugin de caché)
- Limpia la caché del navegador (Ctrl+F5)
- Prueba los resultados filtrados
Paso 3: Verificar
- Aplica cualquier filtro de WOOF (categoría, precio, atributos)
- Verifica la paginación al final de la página
- Los números de página ahora deberían coincidir con los resultados filtrados reales
Antes de la corrección:
Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)
Después de la corrección:
Showing 12 products Pages: 1 2 (correct!)
Cómo funciona
if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
Qué hace esto: Comprueba si el filtrado de WOOF está activo actualmente buscando el parámetro de búsqueda de WOOF en la URL.
$args['total'] = $wp_query->max_num_pages;
Qué hace esto: Sobrescribe el total de paginación de WooCommerce con el número de páginas real de la consulta de WordPress filtrada.
¿Por qué prioridad 999? Algunos temas o plugins modifican la paginación. La prioridad 999 asegura que este código se ejecute al final y tenga prioridad.
Solución de problemas
La paginación sigue incorrecta
Problema: El número de páginas sigue incorrecto después de añadir el código
Posibles causas:
- Código no está en el tema hijo
- Verifica que estás editando el functions.php del tema hijo
- Las actualizaciones del tema padre borrarán el código si no está en el tema hijo
- Caché no limpiada
- Limpia el plugin de caché de WordPress
- Limpia la caché del servidor (panel de hosting)
- Prueba en modo incógnito
- El tema sobrescribe la paginación
- Algunos temas usan funciones de paginación personalizadas
- Intenta aumentar la prioridad a 9999
- Consulta la documentación del tema
Solución: Aumenta la prioridad si hay conflictos con el tema:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Cuándo es necesaria esta corrección
Necesitas esta corrección si:
- ✅ Usas WOOF/HUSKY para el filtrado de productos
- ✅ La paginación muestra más páginas de las que existen
- ✅ Al hacer clic en números de página altos no se muestran productos
- ✅ El recuento de resultados filtrados no coincide con la paginación