Como corrigir o erro de query no Listing Grid do JetEngine
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.
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
- 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 - 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 - 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 ); - 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 - 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
// 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 );














