# Como corrigir o Listing Grid vazio no JetEngine

O Listing Grid vazio no JetEngine ocorre quando a query (Post Status, Meta Query, Tax Query, Offset ou Cache Query) não retorna nenhum item para o Listing template. Corrige-se alinhando os parametros do Query Builder a dados que existem no site.

## O que é Listing Grid vazio JetEngine?

O Listing Grid vazio JetEngine acontece quando o widget Listing Grid renderiza o Listing template, mas a query por tras dele devolve zero itens, deixando a área em branco no editor e no frontend. O Listing Grid não inventa dados: ele exibe exatamente o que a fonte de query retorna. Quando o Post Type escolhido não tem posts publicados, ou quando uma clausula de Meta Query, Tax Query, Date Query ou Offset filtra todos os registros, o grid fica vazio mesmo com o template montado corretamente. O mesmo vale para Custom Query do Query Builder cujo módulo (Custom Content Type, REST API, Data Store) não esta ativado no JetEngine Dashboard.

## Como identificar

- Área do Listing Grid aparece totalmente em branco no frontend, sem cards e sem mensagem de erro
- No editor Elementor ou Gutenberg o widget mostra 'No data was found' ou simplesmente nenhum item de exemplo
- O Listing template abre normalmente sozinho, mas zera ao ser inserido no Listing Grid da página
- Os itens existem em JetEngine -> Query Builder ao testar a query, mas não chegam ao grid publicado
- O grid funciona logado como admin e fica vazio para visitante deslogado

## Como prevenir

- Sempre criar e testar a query em JetEngine -> Query Builder antes de inserir o Listing template no grid, conferindo a contagem de itens retornados
- Documentar o Type esperado de cada meta field para nunca comparar número como Char nem data como texto na Meta Query
- Manter o Cache Query ligado em producao por performance, mas desliga-lo durante a depuração e religar so depois de validar os dados
- Padronizar Post Status em Publish nas queries de frontend e revisar a paginação (Offset e Posts Per Page) ao reaproveitar uma query em outra página

Erros relacionados

- [Como corrigir o erro de query no Listing Grid do JetEngine](https://full.services/wp-fixer/corrigir-erro-query-jetengine-listing-grid/)
- [Como corrigir o erro de query no JetEngine quando o Listing não filtra](https://full.services/wp-fixer/corrigir-query-listing-nao-filtra-jetengine/)
- [Como corrigir o cache do WP Rocket que quebra listings do JetEngine](https://full.services/wp-fixer/corrigir-cache-wp-rocket-jetengine/)

## Causa

- O campo Post Status da query não inclui o status real dos itens: a query pede 'Publish' mas os posts estão em Draft, Pending ou Private, entao nenhum entra na lista.
- Uma clausula de Meta Query usa o Type errado (Char em campo numerico, ou Date em campo de texto) ou o operador Equal com um Value que nenhum registro possui, descartando todos os itens.
- A Tax Query aponta para o Field errado (Term ID quando o valor informado e o Slug) ou para um termo inexistente na taxonomia, resultando em zero correspondencias.
- O valor de Offset em Pagination e maior que o total de itens, ou Posts Per Page esta em 0, fazendo a query pular todos os resultados.
- A Custom Query selecionada e de um Query Type cujo módulo não esta ativado em JetEngine -> JetEngine -> Modules (Custom Content Type, REST API Listings ou Data Stores), entao a fonte retorna vazia.
- O switcher Cache Query, ligado por padrão, serve um resultado em cache desatualizado depois que os posts ou meta campos mudaram, exibindo o estado antigo (vazio).

## Como resolver

1. Confirme o Post Type e o Post Status da query: Abra a query usada pelo Listing template e garanta que o Post Type tem itens publicados e que o Post Status cobre os estados reais dos registros. Esse e o motivo número um de grid vazio quando os posts estão em rascunho.

```
WordPress Dashboard -> JetEngine -> Query Builder -> (sua query) -> aba General
Post Type: selecione o mesmo post type do Listing template
Post Status: marque Publish (e Private/Draft apenas se for intencional exibi-los)
```

2. Revise as clausulas de Meta Query e Tax Query: Filtros de meta e taxonomia são a causa mais comum de zero itens. Verifique o operador, o Type do dado e se o termo realmente existe. Um Type incorreto faz a comparacao falhar silenciosamente.

```
aba Meta Query -> confira Field key/name, Compare e Type (Numeric para número, Date para data)
aba Tax Query -> confira Taxonomy, Field (Term ID / Slug / Name) e Terms
Remova temporariamente cada clausula para isolar qual delas zera o resultado
```

3. Cheque Pagination, Offset e o módulo da Custom Query: Um Offset alto pula todos os itens e um módulo desativado faz a fonte retornar vazia. Ajuste a paginação e ative o módulo correspondente ao Query Type.

```
aba Pagination -> Offset: 0 | Posts Per Page: 9 (ou -1 para todos)
WordPress Dashboard -> JetEngine -> JetEngine -> aba Modules
Ative o módulo do tipo usado: Custom Content Type, REST API Listings ou Data Stores
```

4. Desligue o Cache Query e revalide: A doc do Crocoblock recomenda desativar o Cache Query quando ha resultados incorretos. Desligue, salve e recarregue a página sem cache do navegador para confirmar se o grid volta a popular.

```
aba General da query -> desative o switcher Cache Query
Salve a query e limpe o cache de plugins (WP Rocket / LiteSpeed) se houver
Recarregue a página do Listing Grid em aba anonima para validar
```


## Código

```php
// Diagnostico rapido: rode a mesma query do Listing Grid via WP_Query e veja a contagem real.
// Cole em um snippet (Code Snippets / functions.php) e acesse ?jetdiag=1 como admin.
add_action( 'init', function () {
    if ( ! isset( $_GET['jetdiag'] ) || ! current_user_can( 'manage_options' ) ) {
        return;
    }
    $args = array(
        'post_type'      => 'projeto',   // troque pelo Post Type do seu Listing
        'post_status'    => 'publish',
        'posts_per_page' => 9,
        'offset'         => 0,
        'meta_query'     => array(
            array(
                'key'     => 'ativo',
                'value'   => '1',
                'compare' => '=',
                'type'    => 'NUMERIC',
            ),
        ),
    );
    $q = new WP_Query( $args );
    error_log( 'JetEngine listing diag -> itens encontrados: ' . $q->found_posts );
    wp_die( 'Itens encontrados: ' . intval( $q->found_posts ) );
} );
```

## Perguntas frequentes

### Por que o Listing Grid do JetEngine aparece vazio so no frontend e não no editor?

Geralmente porque o Post Status da query inclui rascunhos visiveis ao admin no editor, mas o visitante deslogado so enxerga itens com status Publish. Ajuste o Post Status para Publish e confirme que existem posts publicados daquele Post Type.

### Como saber qual clausula de query esta zerando o Listing Grid?

Abra a query em JetEngine -> Query Builder e remova uma clausula de Meta Query ou Tax Query por vez, salvando e recarregando o grid. Quando os itens voltarem a aparecer, a última clausula removida era a responsável pelo filtro restritivo.

### O Cache Query do JetEngine pode deixar o Listing Grid vazio?

Sim. O Cache Query fica ligado por padrão e pode servir um resultado antigo após você alterar posts ou meta fields. A documentação do Crocoblock recomenda desativar o switcher Cache Query quando os resultados estiverem incorretos e revalidar a página.

### Meu Listing Grid usa Custom Content Type e não mostra nada. O que falta?

O módulo Custom Content Type precisa estar ativado em JetEngine -> JetEngine -> Modules. Query Types como Custom Content Type, REST API e Data Store so retornam dados com o módulo correspondente habilitado no JetEngine Dashboard.

### Um Offset errado pode esvaziar o Listing Grid?

Pode. Na aba Pagination, o valor de Offset pula esse número de itens iniciais. Se o Offset for maior ou igual ao total de resultados, a query pula todos e o grid fica vazio. Defina Offset como 0 para exibir desde o primeiro item.

### Por que a Tax Query não retorna posts mesmo com o termo certo?

Quase sempre o campo Field esta divergente do valor informado em Terms. Se Field for Term ID, o Terms precisa ser o ID numerico; se for Slug, precisa ser o slug. Alinhe Field e Terms e confirme que o termo existe na taxonomia selecionada.

### O Type da Meta Query interfere no resultado do Listing Grid?

Sim, e bastante. Comparar um campo numerico com Type Char, ou uma data com Type texto, faz a clausula não casar com nenhum registro. Defina Numeric para números, Date ou Datetime para datas e Char para texto livre.

### Preciso recriar o Listing template para corrigir o grid vazio?

Normalmente não. O Listing Grid vazio quase sempre e problema da query, não do template. Corrija Post Status, Meta Query, Tax Query, Offset, módulo e Cache Query no Query Builder antes de cogitar refazer o template.

**Fonte:** [Crocoblock JetEngine — Query Builder Posts Query Type](https://crocoblock.com/knowledge-base/jetengine/query-builder-posts-query-type/)
