Como Corrigir a Paginação do WooCommerce Mostrando Muitas Páginas com Filtragem
Se a paginação do WooCommerce exibir números de página incorretos ao usar os filtros de produtos WOOF (HUSKY), este guia resolverá.
O Problema
Sintoma: Ao filtrar produtos com WOOF/HUSKY, a paginação mostra mais páginas do que realmente existem.
Exemplo:
- Filtro mostra 15 produtos (deveria ser 2 páginas)
- Paginação exibe: 1, 2, 3, 4, 5… (5+ páginas)
- Clicar na página 3+ mostra 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 adequadamente.
A Solução
Adicione este código para forçar a paginação a usar o número correto de páginas da consulta filtrada do WOOF.
Passo 1: Adicionar Código
Adicione isto ao functions.php do seu tema filho:
/**
* 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 na paginação.
Passo 2: Limpar Cache
- Limpar cache do WordPress (se estiver usando plugin de cache)
- Limpar cache do navegador (Ctrl+F5)
- Testar resultados filtrados
Passo 3: Verificar
- Aplicar qualquer filtro WOOF (categoria, preço, atributos)
- Verificar a paginação no final 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!)
Depois da 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á ativa atualmente, procurando pelo parâmetro de busca do WOOF na URL.
$args['total'] = $wp_query->max_num_pages;
O que isso faz: Substitui o total da 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. A prioridade 999 garante que este código seja executado por último e tenha precedência.
Resolução de Problemas
Paginação Ainda Incorreta
Problema: Número de páginas ainda incorreto após adicionar o código
Causas possíveis:
- Código não está 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 estiver no tema filho
- Cache não foi limpo
- Limpar plugin de cache do WordPress
- Limpar cache do servidor (painel de hospedagem)
- Testar no modo anônimo
- Tema substituindo a paginação
- 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 se houver conflitos de tema:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
Quando Esta Correção é Necessária
Você precisa desta correção se:
- ✅ Usando WOOF/HUSKY para filtragem de produtos
- ✅ 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