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

Como corrigir o erro de query no Listing Grid do JetEngine

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Erro de Query no Listing Grid do JetEngine EN: JetEngine Listing Grid query error
Severidade Grave
Descrição O erro de query no Listing Grid do JetEngine ocorre quando a Custom Query do Query Builder falha ou não retorna nada: tipo de query trocado, SQL invalido, meta query que exclui todos os registros ou macro vazia. O grid fica vazio ou exibe aviso de banco enquanto o Preview do Query Builder parece correto.

O que é o erro de query no Listing Grid do JetEngine?

O erro de query no Listing Grid do JetEngine acontece quando o widget de Listing aponta para uma Custom Query criada no Query Builder e essa query falha ao executar ou devolve zero linhas. O Query Builder e a ferramenta do JetEngine que monta a consulta ao banco (Posts Query, Terms Query, Users Query, SQL/AI Query, CCT Query, REST API Query, entre outras) e entrega o resultado ao Listing Grid quando a opção Use custom query esta ligada e a query certa esta escolhida no dropdown Custom Query.

Como identificar

  • O Listing Grid renderiza vazio no frontend, mas o mesmo Listing com a query padrão do Post Type mostra os itens normalmente.
  • Com WP_DEBUG ligado, a página exibe WordPress database error perto da abertura do grid, indicando que a query do tipo SQL chegou malformada ao banco.
  • No editor da query, o botao Preview do Query Builder mostra os registros, mas no frontend o Listing Grid continua sem resultados.
  • O Listing Grid mostra apenas a mensagem de no posts found, ou a paginação some, mesmo com itens existentes que deveriam casar com o filtro.
  • O Listing Grid exibe um erro de macro não resolvida quando a query usa um valor dinamico como current_post_id ou current_user_id que veio vazio.
Antes de começar: Antes de editar uma query do tipo SQL Query ou apagar condicoes de uma query em producao, faca backup do site e do banco de dados: uma query SQL mal escrita pode ler tabelas além do esperado e, em páginas de alto tráfego, sobrecarregar o banco. Teste a query no Preview e, de preferencia, em ambiente de staging antes de publicar.

Como prevenir

  • Sempre rode o Preview da query no Query Builder antes de liga-la a um Listing Grid, confirmando que ela retorna linhas isolada do frontend
  • Use o Query Type que corresponde ao objeto do Listing Template, evitando misturar Users Query ou Terms Query num Listing montado sobre Post Type
  • Evite o tipo SQL Query quando uma Posts Query ou CCT Query resolve, e quando usar SQL teste a instrucao com o prefixo de tabela correto antes de salvar
  • Exclua o Listing do cache de objeto agressivo enquanto edita queries, para não confundir um resultado em cache com um erro real

Causa

  • A opção Use custom query do Listing Grid esta ligada mas o dropdown Custom Query aponta para uma query inexistente, renomeada ou excluida no Query Builder, deixando o grid sem fonte de dados.
  • O Query Type do Query Builder não casa com o que o Listing Template renderiza, por exemplo uma Users Query alimentando um Listing montado sobre um Post Type, fazendo o grid não encontrar os campos esperados.
  • Erro de sintaxe no tipo SQL Query do Query Builder, como tabela sem o prefixo correto da instalação ou virgula faltando, que o MySQL rejeita e devolve como WordPress database error.
  • Uma condicao de Meta Query usando o compare EXISTS ou um valor que nenhum registro possui, eliminando todas as linhas e devolvendo o grid vazio sem erro visivel.
  • Macro dinamica como current_post_id, current_user_id ou queried_var resolvendo para vazio no contexto onde o Listing Grid foi inserido, fazendo a clausula WHERE filtrar tudo.
  • Plugin de cache de objeto ou de página servindo um resultado antigo da query depois que ela foi editada, mascarando a correção real e mostrando o estado quebrado.

Como resolver

  1. Confirme qual query o Listing Grid esta usando: abra o widget do Listing Grid no editor e verifique se a opção Use custom query esta ligada e se o dropdown Custom Query aponta para a query certa do Query Builder. Se a query foi renomeada ou excluida, reselecione a query valida.
    Editor -> Listing Grid -> Content -> Use custom query (ON) -> Custom Query -> selecionar a query correta
  2. Rode o Preview da query e compare o Query Type: no Query Builder, abra a query e use o Preview para ver se ela retorna linhas isolada do frontend. Confirme que o Query Type casa com o objeto que o Listing Template renderiza, ou seja, Posts Query para Listing de posts e CCT Query para Listing de Custom Content Type.
    WP Admin -> JetEngine -> Query Builder -> abrir a query -> Preview
    WP Admin -> JetEngine -> Query Builder -> conferir o Query Type da query
  3. Ligue o WP_DEBUG e leia o erro real do banco: ative o log de debug para capturar a mensagem exata do MySQL quando a query do tipo SQL Query for invalida. O texto do erro mostra a tabela ou a clausula que o banco rejeitou, em vez de o grid so ficar vazio.
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
  4. Revise a clausula de Meta Query e as macros: abra as condicoes da query e remova temporariamente os filtros de Meta Query e os valores dinamicos por macro, um de cada vez, até o grid voltar a retornar. Assim você isola qual condicao ou macro vazia estava eliminando todos os registros.
    WP Admin -> JetEngine -> Query Builder -> abrir a query -> Meta Query -> remover/ajustar condicao
    WP Admin -> JetEngine -> Query Builder -> conferir macros (current_post_id, current_user_id) no contexto de uso
  5. Limpe o cache e revalide no frontend: depois de corrigir a query, limpe o cache de objeto e de página para o frontend parar de servir o resultado antigo. So entao confirme que o Listing Grid renderiza os itens na página publicada.
    Plugin de cache -> Limpar cache de página e de objeto
    Recarregar a página do Listing com Ctrl+Shift+R
PHP
// functions.php do tema-filho — registra no debug.log a query montada pelo JetEngine
// para o Listing Grid, para voce ver a clausula WHERE/SQL real que chega ao banco.
// Use so em staging; remova depois de depurar.
add_filter( 'jet-engine/query-builder/query/final-query', function ( $args, $query ) {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        error_log( '[JetEngine Query ' . $query->get_id() . '] ' . wp_json_encode( $args ) );
    }
    return $args;
}, 10, 2 );

Perguntas frequentes

Por que o Listing Grid do JetEngine aparece vazio mesmo com itens cadastrados?
Quase sempre a Custom Query ligada no grid esta com o Query Type errado, com uma Meta Query que exclui todos os registros, ou aponta para uma query renomeada. Abra o Listing Grid, confira o dropdown Custom Query e rode o Preview da query no Query Builder para ver se ela retorna linhas isolada do frontend.
Como vejo o erro real da query em vez do grid so vazio?
Ligue WP_DEBUG e WP_DEBUG_LOG no wp-config.php e recarregue a página do Listing. Se a query do tipo SQL Query estiver malformada, o WordPress registra um database error com a tabela ou clausula que o MySQL rejeitou, o que aponta a causa direta em vez de você so ver o grid vazio.
A query funciona no Preview do Query Builder mas o Listing Grid fica vazio. Por que?
Isso acontece quando o Query Type não casa com o objeto que o Listing Template renderiza, ou quando uma macro como current_post_id resolve para vazio no contexto da página. O Preview roda fora desse contexto, entao mostra resultado; no frontend a macro vazia filtra tudo. Ajuste o Query Type e revise as macros.
O que e a opção Use custom query no Listing Grid?
E o toggle que faz o Listing Grid usar uma query montada no Query Builder em vez da query padrão do Post Type. Quando ligado, abre o dropdown Custom Query para você escolher qual query alimenta o grid. Se nenhuma query valida estiver selecionada, o grid fica sem fonte de dados e retorna vazio.
Posso usar uma query do tipo SQL Query no Listing Grid?
Pode, o SQL Query Type le dados direto de tabelas do banco e entrega ao Listing Grid. Mas qualquer erro de sintaxe ou tabela sem o prefixo correto da instalação vira um database error. Teste a instrucao com cuidado e prefira Posts Query ou CCT Query quando elas resolverem o mesmo objetivo.
Por que minha Meta Query deixa o Listing Grid sem resultados?
Uma condicao de Meta Query com compare EXISTS, um valor que nenhum registro possui, ou o tipo de valor errado elimina todas as linhas sem gerar erro visivel. Remova as condicoes uma a uma no Query Builder até o grid voltar a retornar para isolar qual filtro estava zerando o resultado.
O cache pode mascarar a correção da query?
Sim. O cache de objeto ou de página pode servir o resultado antigo da query depois de você corrigi-la, fazendo o grid continuar vazio mesmo com a query já certa. Limpe o cache de página e de objeto e recarregue com Ctrl+Shift+R para validar a correção no frontend.
Preciso editar arquivo para resolver ou da pelo painel do JetEngine?
Na maioria dos casos resolve pelo painel: reselecionar a Custom Query, ajustar o Query Type e revisar a Meta Query no Query Builder. So e preciso editar arquivo para ligar o WP_DEBUG no wp-config.php quando a query e do tipo SQL e você precisa ler a mensagem exata do banco.

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