# Como corrigir o Event Calendar que não sincroniza no Essential Addons

O Event Calendar do Essential Addons não sincroniza quando a fonte de eventos escolhida no widget esta mal configurada: chave de API ou ID do Google Calendar incorretos, calendário do Google não público, ou o plugin The Events Calendar ausente quando ele e a fonte selecionada.

## O que é Event Calendar que não sincroniza no Essential Addons?

O Event Calendar do Essential Addons e um widget do Elementor que exibe uma agenda de eventos a partir de três fontes possiveis, segundo a documentação oficial: eventos manuais cadastrados no próprio widget, um calendário do Google via Google Calendar API, ou os eventos do plugin The Events Calendar instalado no WordPress. Cada fonte tem um caminho de dados diferente, e o widget so mostra o que a fonte selecionada entrega.

A falha de sincronizacao acontece quando esse caminho de dados se rompe. Na fonte Google Calendar, o widget busca os eventos pela API do Google e precisa de uma chave de API valida, do ID correto do calendário e do calendário marcado como público; se qualquer um desses falhar, nenhum evento carrega. Na fonte The Events Calendar, o widget le os eventos daquele plugin, entao se o plugin não estiver instalado e ativo, ou não houver eventos publicados, a agenda aparece vazia mesmo com o widget configurado.

## Como identificar

- O widget EA Event Calendar renderiza a grade do mes, mas nenhum evento aparece nos dias, mesmo havendo eventos na fonte escolhida.
- Eventos novos criados no Google Calendar ou no The Events Calendar não aparecem no widget, ou demoram muito para refletir.
- Ao selecionar a fonte Google Calendar, o calendário fica completamente vazio depois de salvar a chave de API e o ID.
- Mensagem do tipo 'No events found' ou um calendário em branco aparece no frontend onde deveria haver eventos.
- Eventos antigos continuam aparecendo, mas alterações feitas na fonte original não se refletem no widget.

**Antes de começar:** Antes de editar credenciais de API ou alternar a fonte de eventos em producao, faça um backup do site ou teste primeiro em staging, e restrinja a chave de API do Google a Google Calendar API e ao seu domínio para não expor uma chave irrestrita publicamente.

## Como prevenir

- Restrinja a chave da Google Calendar API por API e por referenciador HTTP ao domínio do site, para evitar abuso e manter a chave valida ao longo do tempo.
- Padronize uma fonte de eventos por widget e documente qual e usada em cada página, evitando trocar a fonte sem reconfigurar chave, ID ou plugin.
- Mantenha o Essential Addons, o Elementor e o The Events Calendar sempre na versão estavel mais recente, validando em staging antes de subir.
- Exclua a página com o calendário das regras agressivas de cache ou defina um TTL curto, para que eventos novos da fonte apareçam rapidamente no frontend.

Erros relacionados

- [Como corrigir Elementor com widgets que não aparecem](https://full.services/wp-fixer/corrigir-elementor-widgets-nao-aparecem/)
- [Como corrigir CSS do Elementor que não aplica no frontend](https://full.services/wp-fixer/corrigir-elementor-css-nao-aplica/)
- [Como corrigir o editor do Elementor que não carrega](https://full.services/wp-fixer/corrigir-elementor-nao-carrega/)

## Causa

- A fonte selecionada no widget e Google Calendar, mas a chave de Google Calendar API esta incorreta, expirada ou foi gerada sem habilitar a Google Calendar API no Google Cloud Console, entao a requisicao retorna sem eventos.
- O Calendar ID informado no widget esta errado: foi colado o endereco de compartilhamento em vez do ID real do calendário obtido nas configurações do Google Calendar, e o widget consulta um calendário que não existe.
- O calendário do Google esta com visibilidade privada; como o widget acessa via chave de API pública, um calendário não marcado como público não devolve nenhum evento.
- A fonte selecionada e The Events Calendar, mas o plugin The Events Calendar não esta instalado e ativo, ou não ha eventos publicados nele, deixando a agenda do widget vazia.
- Um plugin de cache (de página ou de objeto) esta servindo uma versão antiga da página onde o widget esta, mascarando os eventos recem-adicionados na fonte original.

## Como resolver

1. Confirme qual fonte de eventos esta selecionada no widget: Abra a página no editor do Elementor, clique no widget EA Event Calendar e veja a opção de fonte. A documentação do Essential Addons descreve três fontes: Manual, Google Calendar e The Events Calendar. Cada uma tem requisitos diferentes, entao saber qual esta ativa define o resto do diagnostico.

```
Painel WP -> edite a página com Elementor
Clique no widget EA Event Calendar -> aba Content -> Event Source
Anote a fonte selecionada (Manual / Google Calendar / The Events Calendar)
```

2. Habilite a Google Calendar API e gere uma chave valida: Se a fonte for Google Calendar, va ao Google Cloud Console, habilite a Google Calendar API no projeto e crie uma chave de API em Credentials. Sem a API habilitada, a chave não retorna eventos. Copie a chave gerada para colar no widget no próximo passo.

```
Acesse o Google Cloud Console -> selecione ou crie um projeto
APIs & Services -> Library -> habilite 'Google Calendar API'
APIs & Services -> Credentials -> Create Credentials -> API key
Copie a chave de API gerada
```

3. Pegue o Calendar ID e deixe o calendário público: Ainda na fonte Google Calendar, abra as configurações do calendário no Google Calendar, copie o Calendar ID (e não o link de compartilhamento) e marque o calendário como público. O widget acessa por chave de API pública, entao um calendário privado nunca devolve eventos.

```
Google Calendar -> Settings do calendário -> 'Integrate calendar' -> copie o Calendar ID
Em 'Access permissions for events', marque 'Make available to public'
Cole a chave de API e o Calendar ID nos campos do widget EA Event Calendar e salve
```

4. Para a fonte The Events Calendar, confirme o plugin e os eventos: Se a fonte for The Events Calendar, o widget le os eventos daquele plugin. Confirme que o plugin The Events Calendar esta instalado e ativo e que ha pelo menos um evento publicado com data futura; sem o plugin ou sem eventos, a agenda fica vazia.

```
Painel WP -> Plugins -> confirme 'The Events Calendar' instalado e ativo
Painel WP -> Events -> verifique se ha eventos publicados com data valida
No widget EA Event Calendar, confirme 'Event Source' = The Events Calendar e salve
```

5. Limpe os caches e recarregue a página: Depois de ajustar a fonte, limpe o cache do plugin de cache e o cache do CSS do Elementor e recarregue a página em uma janela anonima. Cache servindo HTML antigo e a causa comum de eventos novos não aparecerem mesmo com a fonte correta.

```
Painel WP -> seu plugin de cache -> limpar todo o cache
Painel WP -> Elementor -> Tools -> Regenerate CSS & Data
Abra a página em uma janela anonima e confirme os eventos
```


## Código

```php
<?php
// Limpa o cache de transients do EA Event Calendar / chamadas externas
// para forcar a re-sincronizacao da fonte (ex.: Google Calendar API).
// Use uma vez via WP-CLI eval-file ou em um mu-plugin temporario.
add_action( 'init', function () {
    if ( ! current_user_can( 'manage_options' ) || ! isset( $_GET['ea_calendar_resync'] ) ) {
        return;
    }
    global $wpdb;
    $wpdb->query(
        "DELETE FROM {$wpdb->options}
         WHERE option_name LIKE '_transient_eael_%'
            OR option_name LIKE '_transient_timeout_eael_%'"
    );
    wp_safe_redirect( remove_query_arg( 'ea_calendar_resync' ) );
    exit;
} );
```

## Perguntas frequentes

### Por que o Event Calendar do Essential Addons não mostra nenhum evento

Quase sempre a fonte de eventos selecionada no widget esta mal configurada. Confirme em qual fonte ele esta (Manual, Google Calendar ou The Events Calendar) e revise os requisitos dela: chave e ID no Google, ou o plugin The Events Calendar instalado com eventos publicados.

### Preciso de chave de API para usar o Google Calendar no EA Event Calendar

Sim. Para a fonte Google Calendar você precisa habilitar a Google Calendar API no Google Cloud Console e gerar uma chave de API valida, além do Calendar ID. Sem a chave correta, o widget não consegue buscar os eventos do calendário.

### Onde encontro o Calendar ID do Google para colar no widget

Abra as configurações do calendário no Google Calendar, va em Integrate calendar e copie o campo Calendar ID. Use esse ID, e não o link de compartilhamento público, pois o widget consulta o calendário pelo ID exato.

### O calendário do Google precisa ser público para o widget funcionar

Sim. Como o EA Event Calendar acessa o Google via chave de API pública, o calendário precisa estar marcado como público nas permissões de acesso. Um calendário privado não devolve eventos para a chave de API e a agenda fica vazia.

### Por que o The Events Calendar não aparece como fonte de eventos

A integração com The Events Calendar exige que o plugin The Events Calendar esteja instalado e ativo no WordPress. Sem o plugin ativo, a fonte não funciona e o widget não tem de onde ler os eventos para exibir na agenda.

### Os eventos novos demoram para aparecer no Event Calendar, o que faço

Normalmente e cache servindo HTML antigo. Limpe o cache do seu plugin de cache, regenere o CSS e os dados do Elementor em Ferramentas e recarregue a página em janela anonima para ver os eventos atualizados da fonte.

### Mudei a fonte de Manual para Google Calendar e sumiram os eventos, por que

Cada fonte tem dados próprios. Ao trocar de Manual para Google Calendar, o widget passa a buscar do Google e ignora os eventos manuais. Configure chave de API, Calendar ID e calendário público para os eventos do Google carregarem na nova fonte.

**Fonte:** [Essential Addons for Elementor — EA Event Calendar (documentacao oficial)](https://essential-addons.com/docs/event-calendar/)
