Documentação Eventos Pro

Plugin como pacote instalável .zip, com estrutura OOP, templates, CSS/JS, readme e instruções. Também vou validar os pontos críticos do WordPress — CPT, metabox, nonce, WP_Query e current_time(‘mysql’, true) — para deixar o código consistente com boas práticas atuais.

Já validei a base com a documentação oficial do WordPress. A solução vai usar CPT em plugin — recomendado para manter o conteúdo independente do tema —, nonces para metaboxes e WP_Query com meta_query comparando a data final em UTC.

O pacote já está montado e passei uma verificação de sintaxe PHP em todos os arquivos principais, sem erros. Agora vou compactar em .zip e deixar a estrutura pronta para instalação pelo painel do WordPress.

agenda-eventos-pro/
├── meu-plugin-eventos.php
├── readme.txt
├── includes/
│ ├── class-cpt.php
│ ├── class-metaboxes.php
│ ├── class-query.php
│ ├── class-shortcode.php
│ ├── class-assets.php
│ ├── class-template.php
│ └── class-date-helper.php
├── templates/
│ └── single-evento.php
├── assets/
│ ├── css/
│ │ ├── frontend.css
│ │ └── admin.css
│ └── js/
│ └── admin.js
└── languages/

Também rodei verificação de sintaxe PHP em todos os arquivos .php e não apareceram erros. Ainda assim, recomendo testar em ambiente de homologação antes de usar em produção, porque eu não executei o plugin dentro de uma instalação real do WordPress.

Principais decisões técnicas

O CPT evento foi criado dentro do plugin, e não no tema, porque o próprio handbook do WordPress recomenda CPTs em plugins para manter o conteúdo portátil mesmo se o tema for trocado.

A lógica de fuso horário ficou centralizada em class-date-helper.php. No admin, o usuário informa data e hora no fuso configurado no WordPress. Ao salvar, o plugin converte para UTC e grava nos metadados _aep_start_utc e _aep_end_utc. Na exibição, ele converte de UTC de volta para o fuso local usando wp_timezone(), que retorna o timezone configurado no site.

A filtragem de eventos futuros usa current_time(‘mysql’, true), que retorna o horário em formato MySQL e, com o segundo parâmetro verdadeiro, usa GMT/UTC. A consulta compara esse valor com _aep_end_utc, então o evento desaparece automaticamente assim que o horário de término passa.

A segurança da metabox usa wp_nonce_field() e validação com wp_verify_nonce(). O WordPress documenta o nonce como proteção para verificar se o envio veio de uma tela legítima do próprio site.

A busca dos eventos usa WP_Query com meta_query, ordenação por _aep_start_utc, cache_results => false e filtro por categoria/mês quando usado no shortcode. O WP_Meta_Query é justamente o recurso do WordPress para filtrar objetos por metadados.

Shortcode pronto para Elementor Free

Use no widget Shortcode do Elementor:

Nenhum evento futuro encontrado.

Outros exemplos:

Nenhum evento futuro encontrado.

Nenhum evento futuro encontrado.

Nenhum evento futuro encontrado.

Observação importante

O plugin já inclui aviso no admin caso o fuso horário não esteja como America/Sao_Paulo. O caminho para configurar é:

Configurações > Geral > Fuso horário > America/Sao_Paulo.

Para cadastrar os eventos, faça assim:

1. Ative o plugin

No painel do WordPress:

Plugins > Adicionar novo > Enviar plugin

Envie o arquivo:

agenda-eventos-pro.zip

Depois clique em:

Instalar agora > Ativar plugin

2. Configure o fuso horário

Antes de cadastrar os eventos, confira isso:

Configurações > Geral > Fuso horário

Selecione:

America/Sao_Paulo

Depois salve.

Isso é importante porque o plugin calcula corretamente o horário local do evento e converte internamente para UTC.

3. Cadastre um novo evento

No menu lateral do WordPress, acesse:

Eventos > Adicionar novo

Você verá uma tela parecida com a tela normal de posts/páginas.

Preencha:

Título do evento
Exemplo:

Palestra sobre IA e Impactos Sociais

Descrição completa
Use o editor normal do WordPress para colocar todos os detalhes do evento.

Imagem destacada
No painel lateral, defina a imagem destacada. Ela será usada como banner/thumbnail do evento.

4. Preencha os detalhes do evento

Na mesma tela, procure a caixa chamada:

Detalhes do evento

Preencha:

Data de início
Horário de início
Data de término
Horário de término
Local do evento
Duração total em horas

Exemplo:

Data de início: 07/07/2026
Horário de início: 09:00
Data de término: 07/07/2026
Horário de término: 11:00
Local do evento: Senac Tatuapé – Auditório Azevedo
Duração total: 2

A duração é calculada automaticamente, mas você pode alterar manualmente se quiser.

5. Publique

Depois de preencher tudo, clique em:

Publicar

Pronto. O evento já estará cadastrado.

6. Como exibir os eventos em uma página

Crie ou edite uma página, por exemplo:

Agenda de Eventos

Dentro dela, cole este shortcode:

Nenhum evento futuro encontrado.

No Elementor Free:

Editar com Elementor > arraste o widget Shortcode > cole o shortcode > Atualizar

Importante

O evento só aparece na listagem enquanto ainda não terminou.

Exemplo: se o evento termina em 07/07/2026 às 11:00, ele aparece até esse horário. Depois disso, sai automaticamente da lista.

Mas eu queria um opção mais amigável, por exemplo m formulário que eu pudesse usar em uma página do elementor

Sim, faz sentido. Vou evoluir o plugin para ter um formulário front-end via shortcode, próprio para colocar em uma página feita no Elementor Free, sem depender da tela padrão de posts do WordPress.

Vou adicionar um segundo shortcode ao plugin:

Você precisa estar logado para gerenciar eventos.

Fazer login

. Ele vai renderizar um formulário bonito no front-end, com envio seguro, upload de banner, criação automática do CPT evento e a mesma conversão de horário local para UTC.

Pensou por 2m 58s

Perfeito — eu atualizei o plugin para incluir uma opção mais amigável: um formulário front-end por shortcode, próprio para usar em uma página criada no Elementor Free.

Baixe a versão atualizada aqui:

Baixar Agenda de Eventos Pro v1.1.0

O que foi adicionado

Agora o plugin tem este novo shortcode:

Você precisa estar logado para gerenciar eventos.

Fazer login

Ele cria um formulário visual na página com campos para:

Título do evento
Descrição completa
Data de início
Horário de início
Data de término
Horário de término
Local do evento
Duração total
Categoria
Banner do evento

O formulário cria automaticamente um novo post do tipo evento usando wp_insert_post(), que é a função nativa do WordPress para inserir ou atualizar posts no banco de dados. Também inclui upload de banner usando media_handle_upload(), que salva o arquivo enviado e cria o anexo na biblioteca de mídia.

Como usar no Elementor Free

Crie uma página chamada, por exemplo:

Cadastrar Evento

Depois:

Editar com Elementor
Adicionar widget Shortcode
Colar o shortcode abaixo
Atualizar a página

Use:

Você precisa estar logado para gerenciar eventos.

Fazer login

Pronto. Você terá uma página com formulário para cadastrar eventos sem precisar entrar em Eventos > Adicionar novo.

Exemplos úteis

Para cadastrar como rascunho:

Você precisa estar logado para gerenciar eventos.

Fazer login

Para cadastrar e redirecionar para a página do evento:

Você precisa estar logado para gerenciar eventos.

Fazer login

Para cadastrar sempre em uma categoria específica:

Você precisa estar logado para gerenciar eventos.

Fazer login

Para personalizar o título e o botão:

Você precisa estar logado para gerenciar eventos.

Fazer login


Segurança

O formulário só aparece para usuários logados com permissão de edição. Usei current_user_can() para validar permissão do usuário, conforme a prática nativa do WordPress.

Também incluí nonce no formulário com wp_nonce_field() e validação com wp_verify_nonce(), para proteger o envio contra requisições indevidas. A documentação do WordPress recomenda nonces em formulários justamente para validar que o envio veio de uma tela legítima do próprio site.

Fuso horário

A lógica continua a mesma:

Usuário informa data/hora no fuso do WordPress
O plugin converte para UTC ao salvar
O plugin converte UTC de volta para America/Sao_Paulo ao exibir
A listagem compara com current_time(‘mysql’, true)

Ou seja: o evento continua desaparecendo automaticamente da agenda quando o horário de término passa.

Instalação da nova versão

No WordPress:

Plugins > Adicionar novo > Enviar plugin

Envie o arquivo:

agenda-eventos-pro-v1.1.0.zip

Como ele usa a mesma pasta do plugin anterior, o WordPress deve oferecer a opção de substituir a versão atual pela enviada.

Eu também rodei verificação de sintaxe PHP em todos os arquivos .php da nova versão e não apareceram erros. Ainda recomendo testar primeiro em ambiente de homologação antes de usar no site principal.

Mas como eu faço para editar um evento no front end

A versão que eu gerei permite cadastrar pelo front-end, mas ainda não tinha fluxo completo de edição no front-end. Vou evoluir o plugin para incluir uma área de gerenciamento com lista de eventos, botão “Editar” e formulário reaproveitado para atualizar o evento.

A solução mais prática será esta: você coloca um único shortcode em uma página do Elementor, e ele vira um “painel” front-end. Nessa página o usuário vê os eventos cadastrados, clica em “Editar”, altera os dados e salva sem entrar no painel administrativo.

Pensou por 3m 40s

Sim — para editar pelo front-end, o plugin precisava de uma área de gerenciamento, não apenas o formulário de cadastro.

Eu atualizei o plugin para a versão 1.2.0, com edição front-end incluída:

Baixar Agenda de Eventos Pro v1.2.0

Como editar eventos pelo front-end

Depois de instalar/atualizar o plugin, crie uma página no WordPress chamada, por exemplo:

Gerenciar Eventos

Abra essa página no Elementor Free e adicione o widget Shortcode.

Cole este shortcode:

Você precisa estar logado para gerenciar eventos.

Fazer login

Essa página agora será um painel front-end com:

Lista de eventos cadastrados
Botão “Cadastrar novo evento”
Botão “Editar”
Botão “Ver”
Botão “Lixeira”
Formulário de edição do evento
Fluxo de uso

Na prática, você faz assim:

1. Acesse a página Gerenciar Eventos.
2. Veja a lista de eventos cadastrados.
3. Clique em “Editar”.
4. Altere título, descrição, data, horário, local, duração, categoria ou banner.
5. Clique em “Atualizar evento”.

Pronto. O evento é atualizado sem precisar entrar no painel administrativo do WordPress.

Shortcode principal recomendado

Use este:

Você precisa estar logado para gerenciar eventos.

Fazer login

Também pode limitar a quantidade de eventos:

Você precisa estar logado para gerenciar eventos.

Fazer login

Ou mudar o título do painel:

Você precisa estar logado para gerenciar eventos.

Fazer login


Formulário direto de edição

Também deixei disponível a edição direta por ID:

Você precisa estar logado para gerenciar eventos.

Fazer login

Mas, no seu caso, o mais amigável é usar o painel:

Você precisa estar logado para gerenciar eventos.

Fazer login

Porque ele já lista os eventos e coloca o botão Editar automaticamente.

Segurança

A edição só aparece para usuários logados com permissão para editar eventos. No código, usei current_user_can(‘edit_post’, ID) para validar a permissão no evento específico, que é a forma nativa do WordPress para checar capacidades do usuário sobre um post.

O formulário de edição usa nonce com wp_verify_nonce() para validar o envio. A documentação do WordPress descreve essa função como a verificação de um nonce de segurança com tempo limitado.

Para atualizar o evento, usei wp_update_post(), função nativa do WordPress para atualizar posts existentes.

Também passei verificação de sintaxe PHP em todos os arquivos .php, sem erros detectados. Recomendo testar em um ambiente de homologação antes de colocar no site principal.

Dá para fazer isso de forma elegante com um novo shortcode específico para Elementor: um evento em destaque grande e, abaixo ou ao lado, mais 3 eventos em cards menores. Vou ajustar o plugin para esse formato ficar pronto sem você precisar montar manualmente no Elementor.

Pensou por 1m 34s

Sim. Para isso, o ideal é usar um bloco do tipo:

evento principal em destaque + 3 eventos menores ao lado/abaixo.

Eu atualizei o plugin para a versão 1.3.0 com um novo shortcode específico para isso:

Baixar Agenda de Eventos Pro v1.3.0

Como usar no Elementor

Crie ou edite a página no Elementor e adicione o widget Shortcode.

Cole isto:

Esse shortcode mostra:

1 evento principal em destaque
+ 3 próximos eventos em menor escala
Exemplo mais personalizado


Para filtrar por categoria

Se você tiver uma categoria chamada palestras, use:


Para esconder o resumo do evento principal

Como fica a lógica

O card maior mostra o próximo evento futuro, ou seja, o evento com data/hora de início mais próxima.

Os 3 cards menores mostram os próximos eventos na sequência.

A lógica continua respeitando o filtro de eventos futuros: evento que já terminou não aparece, porque a consulta compara o horário atual em UTC com o horário de término salvo em UTC.

Instalação da atualização

No WordPress:

Plugins > Adicionar novo > Enviar plugin

Envie o arquivo:

agenda-eventos-pro-v1.3.0.zip

Depois escolha a opção para substituir a versão atual do plugin.

Também verifiquei a sintaxe PHP dos arquivos da nova versão e não apareceram erros.

Rolar para cima