🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o erro de query no JetEngine quando o Listing não filtra

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Listing do JetEngine não filtra resultados EN: JetEngine Listing not filtering results
Severidade Grave
Descrição Quando o JetEngine Listing não filtra, o filtro do JetSmartFilters dispara, o grid recarrega, mas os mesmos itens continuam na tela. A causa quase sempre e o Query ID divergente entre o filtro e o Listing Grid, uma Custom Query do Query Builder sem o mesmo Query ID, ou o provider apontando para a listagem errada.

O que é o JetEngine Listing que não filtra?

O Listing Grid do JetEngine renderiza uma listagem dinâmica e, quando ha um filtro do JetSmartFilters na página, o filtro precisa saber exatamente qual query do grid atualizar. Esse vinculo e feito pelo Query ID: o mesmo identificador tem de estar no filtro e no Listing Grid. Se o grid usa uma Custom Query montada no Query Builder, o Query ID dessa consulta também precisa bater. Quando os identificadores divergem, ou quando o provider do filtro não aponta para o JetEngine, o filtro envia a requisicao mas a query do grid ignora os argumentos e devolve a listagem padrão, sem filtrar. O resultado e um grid que recarrega visualmente, porém mostra sempre os mesmos resultados.

Como identificar

  • Você escolhe uma opção no filtro, o Listing Grid recarrega ou pisca, mas o JetEngine Listing não filtra e os mesmos posts continuam na lista.
  • A URL ganha o parametro do filtro, por exemplo jsf ou meta_category, mas a contagem de resultados do grid não muda.
  • Com dois Listing Grids na mesma página, o filtro afeta o grid errado ou nenhum, sinal de Query ID ausente ou repetido.
  • O grid que usa Custom Query do Query Builder ignora o filtro por completo, enquanto um grid simples na mesma página filtra normal.

Como prevenir

  • Atribua um Query ID único a cada Listing Grid já na montagem da página e repita o mesmo valor em todos os filtros que controlam aquele grid
  • Sempre que o grid usar uma Custom Query do Query Builder, defina o mesmo Query ID na consulta antes de adicionar filtros
  • Padronize o formato do Query ID com letras minusculas e hifen, evitando espacos, números e caracteres especiais que quebram o vinculo

Causa

  • Query ID divergente: o valor no campo Query ID do filtro não e identico ao Query ID do Listing Grid, entao o filtro não encontra a query que deve atualizar.
  • Custom Query do Query Builder sem Query ID: a listagem usa uma consulta do Query Builder, mas o mesmo Query ID não foi repetido na aba da consulta, e o filtro mira a query default em vez da custom.
  • Provider errado no filtro: o campo This filter for esta em JetEngine no caso de Custom Content Type, ou aponta para WooCommerce Archive, em vez do provedor JetEngine usado pelo Listing Grid.
  • Query ID com formato invalido: o identificador contem espacos, números ou caracteres especiais, valores que o JetSmartFilters não casa entre as duas pontas.
  • Dois Listing Grids na página compartilhando o mesmo Query ID vazio, fazendo o filtro não distinguir qual query atualizar.

Como resolver

  1. Defina um Query ID valido no Listing Grid: abra o Listing Grid no editor e atribua um identificador único ao grid. O valor precisa ser so com letras e hifens, sem espacos, sem números e sem caracteres especiais, porque e ele que vai amarrar o filtro a este grid.
    Listing Grid -> aba Settings -> campo Query ID: filtro-imoveis
    Regra do valor: so letras minusculas e hifen, sem espaco, sem número, sem acento
  2. Repita o mesmo Query ID no filtro: abra cada widget de filtro do JetSmartFilters e cole exatamente o mesmo identificador do grid. Qualquer diferenca de uma letra faz o filtro mirar outra query e o grid não filtrar.
    Filtro -> aba Content -> campo Query ID: filtro-imoveis
    Confirme que o valor e identico ao do passo 1, caractere por caractere
  3. Amarre o Query ID na Custom Query do Query Builder: se o Listing Grid usa uma consulta criada no Query Builder, abra essa consulta e defina o mesmo Query ID nela. Sem isso, o filtro continua mirando a query padrão do grid e ignora a Custom Query.
    WordPress Dashboard -> JetEngine -> Query Builder -> abra a consulta usada pelo grid
    Query Builder -> bloco da consulta -> campo Query ID: filtro-imoveis
  4. Confira o provider no filtro: verifique se o filtro esta apontando para o provedor JetEngine, e não para um arquivo do WooCommerce ou outro tipo. Para um Listing Grid que monta Custom Content Type, o provider correto e o JetEngine de CCT.
    Filtro -> campo This filter for: JetEngine
    Se a listagem usa CCT: Filtro -> This filter for: JetEngine (Custom Content Type)
  5. Teste o filtro e inspecione a query: salve, abra a página no front e aplique o filtro. Se ainda não filtrar, use o hook do provedor para registrar os argumentos da query e confirmar se o filtro chega ao grid. O código abaixo mostra como logar esses argumentos.
    Aplique o filtro no front e observe se a contagem do grid muda
    Use o snippet do bloco de código para registrar os query args no debug.log
PHP
<?php
// Registra os argumentos da query do Listing Grid para confirmar se o filtro chega ate ele.
// Conecta-se ao hook do provedor JetEngine usado pelo JetSmartFilters.
add_filter( 'jet-engine/listing/grid/posts-query-args', function ( $args, $widget ) {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        error_log( 'JetEngine Listing query args: ' . wp_json_encode( $args ) );
    }
    return $args;
}, 99, 2 );

Perguntas frequentes

Por que meu JetEngine Listing não filtra mesmo com o filtro na página?
Na maioria dos casos o Query ID do filtro não e identico ao do Listing Grid. O filtro precisa do mesmo identificador do grid para saber qual query atualizar. Cole exatamente o mesmo valor nos dois widgets, sem espacos, números ou caracteres especiais, e teste de novo.
O que e o Query ID no Listing Grid do JetEngine?
O Query ID e um identificador único que conecta o filtro a uma query específica do grid. Quando ha mais de um Listing Grid na página ou o grid usa uma Custom Query, o filtro so encontra a listagem certa se o mesmo Query ID estiver definido no grid e no filtro. Sem esse vinculo, o filtro não atualiza nada.
Meu grid usa Custom Query do Query Builder e o filtro não funciona. O que falta?
Falta repetir o Query ID na própria consulta do Query Builder. Quando o Listing Grid puxa uma Custom Query, o filtro mira a query padrão do grid, não a custom, a menos que a consulta tenha o mesmo Query ID. Abra a consulta no Query Builder, defina o Query ID e repita o valor no grid e no filtro.
Tenho dois Listing Grids e o filtro mexe no grid errado. Como resolver?
Isso e Query ID ausente ou repetido. Dê um Query ID único a cada grid e use, em cada filtro, o identificador do grid que ele deve controlar. Assim o JetSmartFilters distingue as duas queries e cada filtro atualiza so a listagem que você vinculou a ele.
O provider errado também faz o Listing não filtrar?
Sim. Se o campo This filter for do filtro aponta para WooCommerce Archive ou outro provedor, ele não fala com a query do Listing Grid do JetEngine. Para um grid comum o provider e JetEngine, e para uma listagem de Custom Content Type e o JetEngine de CCT. Ajuste o provider e o filtro volta a agir sobre o grid.
O Query ID pode ter qualquer formato?
Não. O valor precisa ser único e sem espacos, números ou caracteres especiais. Use so letras minusculas e hifen, como filtro-imoveis. Um identificador com número ou espaco não casa entre o filtro e o grid, e o filtro deixa de encontrar a query certa.
Como confirmo se o filtro chega até a query do grid?
Use o hook do provedor JetEngine para registrar os argumentos da query. Conectando uma função ao filtro jet-engine/listing/grid/posts-query-args você loga os query args no debug.log e ve se os criterios do filtro estão presentes. Se não estiverem, o vinculo de Query ID ou provider ainda esta errado.
Limpar cache ajuda quando o Listing não filtra?
Ajuda apenas quando a causa e cache servindo a resposta antiga do AJAX. Antes disso, corrija o Query ID e o provider, que respondem pela maioria dos casos. Se já estiverem certos e o grid ainda repetir a mesma lista por AJAX, limpe o cache do site e do CDN e exclua o admin-ajax do cache de página.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes