HUSKY - Product Filter for WooCommerce

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é

  1. Limpia la caché de WordPress (si usas un plugin de caché)
  2. Limpia la caché del navegador (Ctrl+F5)
  3. Prueba los resultados filtrados

Paso 3: Verificar

  1. Aplica cualquier filtro de WOOF (categoría, precio, atributos)
  2. Verifica la paginación al final de la página
  3. 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:

  1. 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
  2. Caché no limpiada
    • Limpia el plugin de caché de WordPress
    • Limpia la caché del servidor (panel de hosting)
    • Prueba en modo incógnito
  3. 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