Como corrigir o JetSmartFilters AJAX que não retorna resultados
O que é o JetSmartFilters AJAX que não retorna resultados?
O JetSmartFilters aplica filtros sobre um provider (Listing Grid do JetEngine, Products Grid do WooCommerce ou Query Loop) sem recarregar a página, usando uma requisicao AJAX ao admin-ajax.php do WordPress. Quando esse caminho falha, o filtro parece responder (mostra o spinner de carregamento), mas o grid volta vazio, repete os mesmos itens ou não reflete a opção marcada. O elo entre o filtro e o provider e o Query ID: se eles não casam, o filtro consulta uma query que não existe naquela página e nada e retornado.
Como identificar
- Você marca uma opção do filtro, aparece o spinner de carregamento, mas o Listing Grid volta vazio ou com a mensagem de nada encontrado.
- O filtro aplica via AJAX e o grid não muda: continua exibindo os mesmos itens de antes do filtro.
- A aba Network do navegador mostra a chamada ao admin-ajax.php com action jet_smart_filters retornando 500, 403 ou um corpo vazio.
- Os filtros funcionam com recarga de página (apply type Page reload), mas param de retornar resultados ao mudar para AJAX.
Como prevenir
- Defina um Query ID único e identico entre filtro, provider, paginação e ordenacao sempre que a página tiver mais de um Listing Grid
- Exclua o admin-ajax.php e o JavaScript do JetSmartFilters do cache e da minificacao desde a configuração inicial do site
- Após importar ou editar conteúdo em massa, reindexe os filtros quando o Indexer estiver ligado
Causa
- Query ID divergente entre o filtro e o provider: o campo Query ID do filtro tem um valor diferente do Query ID do Listing Grid, entao a chamada AJAX consulta uma query que não existe naquela página.
- Provider errado no filtro: o campo This filter for aponta para JetEngine Listing Grid quando o provider real e o WooCommerce Products Grid (ou vice-versa), e o AJAX consulta o provider que não esta na página.
- Indexer não gerado ou desatualizado: com o Indexer ligado, os contadores e o filtro dependem do indice; sem reindexar após cadastrar posts, o filtro retorna zero resultados.
- Plugin de cache ou minificacao de JavaScript quebrando a chamada ao admin-ajax.php, ou servindo a página estatica antiga em vez da resposta AJAX.
- Plugin de segurança ou regra do servidor bloqueando o admin-ajax.php para visitantes deslogados, fazendo a requisicao AJAX retornar 403 e o grid ficar vazio.
Como resolver
- Iguale o Query ID do filtro e do provider: abra o widget do filtro e o widget do Listing Grid ou Products Grid e confirme que ambos usam exatamente o mesmo Query ID, sem espacos nem caracteres especiais. Se o provider esta sem Query ID, deixe o filtro também sem Query ID.
Filtro -> aba Geral -> Query ID: produtos Listing Grid / Products Grid -> aba Geral -> Query ID: produtos - Confirme o provider correto no filtro: no widget do filtro, ajuste o campo This filter for para o provider que existe na página. JetEngine Listing Grid para listagens do JetEngine e WooCommerce Products Grid para grades de produto.
Filtro -> This filter for -> JetEngine Listing Grid Filtro -> Apply type -> AJAX - Reindexe os filtros: se o Indexer esta ligado, reconstrua o indice após qualquer mudanca de conteúdo. Sem reindexar, o filtro consulta um indice vazio e não retorna resultados.
WordPress -> SmartFilters -> Settings -> aba Indexer Reindexar o provider após cadastrar ou editar posts - Exclua o admin-ajax do cache e da minificacao: no plugin de cache, exclua a URL do admin-ajax e o JavaScript do JetSmartFilters da minificacao e combinacao, e ative a opção de não cachear URLs com parametros GET para o filtro não bater na página estatica antiga.
Excluir do cache: /wp-admin/admin-ajax.php Excluir da minificacao/combine JS: jet-smart-filters Ativar: Não cachear URLs com parametros GET (Don't cache URLs with GET parameters) - Libere o admin-ajax.php no plugin de segurança: se a aba Network mostra 403 no admin-ajax.php, confira o plugin de segurança ou o firewall e libere o endpoint para visitantes deslogados, já que o AJAX do filtro roda no front-end sem login.
Permitir POST em /wp-admin/admin-ajax.php para usuários deslogados Testar com cache e plugin de segurança desativados para isolar o bloqueio
# .htaccess - garante que o admin-ajax.php nunca seja cacheado nem bloqueado
# Coloque no .htaccess da raiz, acima das regras do WordPress
<IfModule mod_headers.c>
<Files "admin-ajax.php">
Header set Cache-Control "no-cache, no-store, must-revalidate"
</Files>
</IfModule>
# Libera o endpoint AJAX para visitantes deslogados (o filtro roda no front-end sem login)
<Files "admin-ajax.php">
Require all granted
</Files>














