Como Corrigir Paginação Exibindo Muitas Páginas com Filtro WOOF
Se a paginação do seu WooCommerce exibir números de página incorretos ao usar os filtros de produtos WOOF (HUSKY), este guia irá corrigi-lo.
O Problema
Sintoma: Ao filtrar produtos com WOOF/HUSKY, a paginação mostra mais páginas do que realmente existem.
Exemplo:
- O filtro mostra 15 produtos (deveriam ser 2 páginas)
- Paginação exibe: 1, 2, 3, 4, 5… (5+ páginas)
- Clicar na página 3+ exibe resultados vazios ou “Nenhum produto encontrado”
O que está acontecendo: A paginação do WooCommerce está calculando o número de páginas com base no catálogo total de produtos, não nos resultados filtrados. O WOOF filtra os produtos, mas a paginação não é atualizada de acordo.
A Solução
Adicione este código para forçar a paginação a usar a contagem correta de páginas da consulta filtrada do WOOF.
Etapa 1: Adicionar Código
Adicione isso ao seu tema filho 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);
Prioridade 999: Garante que isso seja executado após outras modificações de paginação.
Etapa 2: Limpar Cache
- Limpar cache do WordPress (se usar plugin de cache)
- Limpar cache do navegador (Ctrl+F5)
- Testar resultados filtrados
Passo 3: Verificar
- Aplicar qualquer filtro WOOF (categoria, preço, atributos)
- Verifique a paginação na parte inferior da página
- Os números de página agora devem corresponder aos resultados filtrados reais
Antes da correção:
Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)
Após correção:
Showing 12 products Pages: 1 2 (correct!)
Como Funciona
if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
O que isso faz: Verifica se a filtragem WOOF está atualmente ativa procurando o parâmetro de pesquisa do WOOF na URL.
$args['total'] = $wp_query->max_num_pages;
O que isso faz: Substitui a paginação do WooCommerce pelo número real de páginas da consulta filtrada do WordPress.
Por que prioridade 999? Alguns temas ou plugins modificam a paginação. Prioridade 999 garante que este código seja executado por último e tenha precedência.
Solução de Problemas
Paginação ainda errada
Problema: Contagem de páginas ainda incorreta após adicionar o código
Causas possíveis:
- Código não no tema filho
- Verifique se você está editando o functions.php do tema filho
- Atualizações do tema pai apagarão o código se não estiverem no tema filho
- Cache não limpo
- Limpar plugin de cache do WordPress
- Limpar cache do servidor (painel de hospedagem)
- Teste em modo anônimo
- Paginação de substituição de tema
- Alguns temas usam funções de paginação personalizadas
- Tente aumentar a prioridade para 9999
- Verifique a documentação do tema
Solução: Aumente a prioridade em caso de conflitos de tema:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Quando este conserto é necessário
Você precisa desta correção se:
- ✅ Usando WOOF/HUSKY para filtragem de produtos
- ✅ A paginação mostra mais páginas do que existem
- ✅ Clicar em números de página altos não mostra produtos
- ✅ A contagem de resultados filtrados não corresponde à paginação