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.
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.
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.
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.
Para cadastrar e redirecionar para a página do evento:
Você precisa estar logado para gerenciar eventos.
Para cadastrar sempre em uma categoria específica:
Você precisa estar logado para gerenciar eventos.
Para personalizar o título e o botão:
Você precisa estar logado para gerenciar eventos.
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.
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.
Também pode limitar a quantidade de eventos:
Você precisa estar logado para gerenciar eventos.
Ou mudar o título do painel:
Você precisa estar logado para gerenciar eventos.
Formulário direto de edição
Também deixei disponível a edição direta por ID:
Você precisa estar logado para gerenciar eventos.
Mas, no seu caso, o mais amigável é usar o painel:
Você precisa estar logado para gerenciar eventos.
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:
Nenhum evento futuro encontrado.
Esse shortcode mostra:
1 evento principal em destaque
+ 3 próximos eventos em menor escala
Exemplo mais personalizado
Nenhum evento futuro encontrado.
Para filtrar por categoria
Se você tiver uma categoria chamada palestras, use:
Nenhum evento futuro encontrado.
Para esconder o resumo do evento principal
Nenhum evento futuro encontrado.
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.