Cómo Solucionar la Paginación que Muestra Demasiadas Páginas con Filtrado WOOF
Si la paginación de tu 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ía haber 2 páginas)
- La paginación muestra: 1, 2, 3, 4, 5… (5+ páginas)
- Al hacer clic en la página 3+ se muestran resultados vacíos o "No se encontraron productos"
Qué está sucediendo: 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 la paginación a utilizar el recuento de páginas correcto de la consulta filtrada de WOOF.
Paso 1: Añadir Código
Agrega esto a tu tema secundario 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);
Prioridad 999: Asegura que esto se ejecute después de otras modificaciones de paginación.
Paso 2: Limpiar caché
- Borrar la caché de WordPress (si usas un plugin de caché)
- Borrar caché del navegador (Ctrl+F5)
- Prueba los resultados filtrados
Paso 3: Verificar
- Aplicar cualquier filtro WOOF (categoría, precio, atributos)
- Comprueba la paginación en la parte inferior 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())) {
Lo que hace esto: Comprueba si el filtrado WOOF está actualmente activo buscando el parámetro de búsqueda de WOOF en la URL.
$args['total'] = $wp_query->max_num_pages;
Lo que hace esto: Sobrescribe el total de paginación de WooCommerce con el número real de páginas de la consulta filtrada de WordPress.
¿Por qué prioridad 999? Algunos temas o plugins modifican la paginación. La prioridad 999 asegura que este código se ejecute por último y tenga precedencia.
Solución de problemas
La paginación sigue mal
Problema: El recuento de páginas sigue siendo incorrecto después de agregar código
Posibles causas:
- Código no en tema hijo
- Verifica que estás editando el functions.php del tema hijo
- Las actualizaciones del tema principal borrarán el código si no están en un tema secundario
- Caché no borrada
- Limpiar el plugin de caché de WordPress
- Borra la caché del servidor (panel de hosting)
- Probar en modo incógnito
- Paginación de anulación de tema
- Algunos temas usan funciones de paginación personalizadas
- Intenta aumentar la prioridad a 9999
- Consultar la documentación del tema
Solución: Aumentar la prioridad si hay conflictos de temas:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Cuándo se necesita esta corrección
Necesitas esta corrección si:
- ✅ Usando WOOF/HUSKY para filtrar productos
- ✅ La paginación muestra más páginas de las que existen
- ✅ Hacer clic en números de página altos no muestra productos
- ✅ El recuento de resultados filtrados no coincide con la paginación