Como corrigir o Calendar do JetEngine que não exibe eventos dinâmicos no WordPress
O que é JetEngine Calendar que não exibe eventos?
O JetEngine Calendar é um widget e bloco da Crocoblock que monta um calendário e distribui posts, Custom Post Types ou registros de Custom Content Type pelas células de cada dia. Cada item aparece renderizado por um Listing Template, e a célula em que ele cai é decidida pelo campo de data indicado na opção Group calendar cells by. É essa combinação Listing mais campo de data que transforma uma lista de eventos em um calendário visual no frontend.
Quando o JetEngine Calendar não exibe eventos, o calendário até carrega a grade de dias, mas as células ficam vazias. Isso quase sempre indica que o calendário não conseguiu casar cada item a uma data: o campo escolhido em Group calendar cells by não está preenchido, está salvo num formato que o widget não consegue ler, ou a query por trás do Listing simplesmente não devolve nenhum post para o período exibido. O calendário só desenha um evento quando recebe ao mesmo tempo um item da query e uma data válida nesse item.
Como identificar
- O calendário renderiza a grade de dias normalmente, mas nenhuma célula mostra eventos, mesmo havendo posts cadastrados com data.
- Os eventos aparecem todos no mesmo dia ou em dias errados, em vez de caírem na data real de cada item.
- A célula exibe apenas a data ou um espaço em branco no lugar do conteúdo do Listing Template do evento.
- Ao trocar de mês a navegação funciona, porém todos os meses ficam sem eventos, inclusive os que têm posts agendados.
- Eventos antigos somem do calendário enquanto os de data futura também não aparecem, sugerindo filtro de data na query cortando os resultados.
Como prevenir
- Defina o formato de gravação do campo de data dos eventos uma única vez no Meta Box do JetEngine e mantenha o mesmo padrão em todos os posts para o calendário sempre conseguir agrupar por dia.
- Ao criar o calendário, valide a query no Query Builder com um número pequeno de eventos de teste antes de publicar, garantindo que ela retorna os posts esperados.
- Use um Listing Template dedicado aos eventos, criado a partir da mesma fonte consultada, e evite reaproveitar Listings de outros tipos de conteúdo.
- Documente qual campo de data alimenta Group calendar cells by para que ajustes futuros no Meta Box não troquem ou esvaziem o campo sem querer.
Causa
- A opção Group calendar cells by aponta para um campo de meta dado que está vazio nos posts: sem valor de data salvo no campo, o JetEngine não tem onde encaixar o item e a célula fica sem evento.
- O campo de data usado no agrupamento está salvo em formato incompatível com o calendário, por exemplo um campo de data do JetEngine configurado para gravar como Unix timestamp enquanto o calendário espera Y-m-d, ou o inverso, fazendo o item não cair na célula correta.
- A query que alimenta o Calendar (Query Builder do JetEngine ou a Default Query) não retorna os posts do tipo certo, por filtrar por outro post type, status diferente de publish ou um meta query que exclui os eventos.
- O Listing Template selecionado no widget foi criado para outra fonte (outro CPT ou Custom Content Type) e não corresponde aos posts consultados, então nada é renderizado dentro da célula mesmo com itens na query.
- Um campo de data repetidor ou dentro de Repeater foi indicado em Group calendar cells by, mas o calendário lê apenas um campo de data simples no nível do post, deixando os eventos sem dia atribuído.
Como resolver
- Confirme que o campo de data dos eventos está preenchido: Abra alguns posts de evento e verifique se o campo de meta dado usado para a data tem valor salvo. Se o campo estiver vazio, o calendário não tem como posicionar o item em nenhum dia. Preencha a data nos posts existentes antes de seguir.
Painel WP -> abra um post de evento usado no calendário Confirme que o campo de data (ex.: event_date) tem um valor salvo e não está em branco - Aponte Group calendar cells by para o campo de data correto: Edite o widget ou bloco JetEngine Calendar e, na opção Group calendar cells by, selecione exatamente o campo de meta dado que guarda a data do evento. Um campo errado ou genérico faz o calendário não agrupar os itens por dia.
Edite a página -> selecione o widget JetEngine Calendar Em Group calendar cells by, escolha o campo de data do evento (ex.: event_date) - Padronize o formato da data no campo do JetEngine: Em JetEngine, abra o Meta Box do campo de data e verifique a opção de salvar como timestamp. Mantenha o mesmo padrão em todos os posts: ou todos como Unix timestamp, ou todos no formato de data legível. Misturar formatos faz parte dos eventos não casar com a célula.
Painel WP -> JetEngine -> Meta Boxes -> abra o Meta Box do evento No campo de data, confira a opção Save as timestamp e use o mesmo padrão em todos os posts - Valide a query que alimenta o calendário: Garanta que a query devolve os posts certos. Se o Calendar usa o Query Builder do JetEngine, abra a query e confirme o post type, o status publish e qualquer filtro de meta query. Se usa a Default Query, confirme a fonte e o post type no próprio widget.
Painel WP -> JetEngine -> Query Builder -> abra a query usada no calendário Confirme Post Type correto, status publish e remova filtros de data que cortem o mês exibido - Use o Listing Template da mesma fonte dos eventos: No widget Calendar, selecione um Listing Template criado para o mesmo tipo de conteúdo que a query retorna. Um Listing de outra fonte não renderiza o item dentro da célula. Recrie o Listing apontando para o CPT ou Custom Content Type dos eventos se necessário.
Painel WP -> JetEngine -> Listings -> confirme a fonte do Listing Template No widget Calendar, selecione o Listing Template da mesma fonte da query
<?php
/**
* Diagnostico: lista os eventos e o valor do campo de data
* que o JetEngine Calendar usa em "Group calendar cells by".
* Rode logado como admin acrescentando ?full_check_calendar=1 na URL.
*/
add_action( 'init', 'full_jetengine_calendar_debug' );
function full_jetengine_calendar_debug() {
if ( ! is_admin() || empty( $_GET['full_check_calendar'] ) || ! current_user_can( 'manage_options' ) ) {
return;
}
$post_type = 'evento'; // ajuste para o CPT dos seus eventos
$date_meta = 'event_date'; // ajuste para o campo usado no Group calendar cells by
$eventos = get_posts( array(
'post_type' => $post_type,
'post_status' => 'publish',
'posts_per_page' => -1,
) );
foreach ( $eventos as $evento ) {
$valor = get_post_meta( $evento->ID, $date_meta, true );
$formato = is_numeric( $valor ) ? 'timestamp' : ( $valor ? 'texto/Y-m-d' : 'VAZIO' );
error_log( sprintf(
'Calendar debug: #%d "%s" | %s = "%s" (%s)',
$evento->ID, $evento->post_title, $date_meta, $valor, $formato
) );
}
}














