WP Manifestindependent plugin directory
manifest / events / agenda-eventos-wp

Agenda de Eventos

Plugin WordPress de agenda de eventos com painel lateral, filtros, destaques e personalização. Shortcode [agenda_eventos], nonce, capabilities próprias e saída escapada.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/lygia-teixeira/agenda-eventos-wp/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Plugin WordPress para cadastrar e divulgar eventos com agenda pública filtrável, painel lateral flutuante de destaques e personalização de cores pelo painel. Inclui tela própria de cadastro, duplicação e repetição de eventos.

Foi criado para atender sites institucionais que precisavam publicar a agenda de eventos sem depender de plugins pesados nem editar o tema. Está em uso em ambiente de produção.


✨ Funcionalidades

Painel lateral (todas as páginas do site)

  • Aba fixa "EVENTOS" que abre um painel com até 10 eventos em destaque
  • Slider com setas, indicadores (dots), contador e swipe no celular
  • Cada card mostra imagem, categoria, resumo, local, datas, botão "Continuar lendo" (modal) e link externo
  • Botão "Ver mais" leva à página da agenda (URL configurável)

Agenda completa — shortcode [agenda_eventos]

  • Lista todos os eventos publicados, ordenados pela data de início (mais recentes primeiro)
  • Filtros no navegador: palavra-chave (ignora acentos), categoria, data inicial e data final (mostra eventos cujo período cruza o intervalo pesquisado)
  • Paginação de 10 eventos por página, com contador de resultados e botão "Limpar filtros"
  • Status automático: Acontecendo, Evento futuro ou Encerrado, pela data atual do WordPress
  • Modal de detalhes, imagem ampliável (lightbox) e link externo / inscrição
  • O atributo quantidade é aceito pelo shortcode, mas ainda não limita a listagem (ver Roadmap)

Cadastro (admin)

  • Tela própria "Adicionar evento" no lugar do editor padrão: título, categoria, imagem (Biblioteca de Mídia), início/encerramento com hora, local, link externo, descrição (editor visual) e destaque
  • Categorias padrão criadas automaticamente (Exposição, Shows, Esporte, Cursos, Palestras, Festas, Cultura, Reuniões, Outros); ao escolher "Outros", é possível digitar uma categoria nova, que fica disponível nos próximos cadastros
  • Duplicar evento (ação na listagem e botão na tela de edição)
  • Repetir evento: semanal, mensal ou anual (até 24 cópias) ou em datas específicas (DD/MM/AAAA, DD-MM-AAAA ou AAAA-MM-DD, até 24), mantendo a duração do evento original. Trata fim de mês e 29/02 em ano não bissexto

Personalização (Agenda de Eventos → Configurações)

  • Ligar/desligar a aba lateral
  • URL do botão "Ver mais", título da agenda e texto de introdução (aceita HTML básico)
  • Cabeçalho da agenda em formato simples ou balão/cartão
  • 15 cores em 4 grupos (Agenda, Eventos, Status, Botões), com seletor de cor e campo hexadecimal
  • Restaurar configurações padrão sem apagar eventos

🔐 Segurança

O plugin recebe dados do painel e os imprime em todas as páginas do site, então entrada, saída e permissões são tratadas explicitamente:

Risco Mitigação no código
CSRF no cadastro, metabox, duplicação e reset wp_nonce_field + wp_verify_nonce / check_admin_referer; duplicação com nonce por evento (ale_duplicate_event_{ID}); configurações via settings_fields
Gerenciamento por usuário sem permissão capability_type => 'ale_evento' + map_meta_cap; capabilities concedidas só ao administrador; current_user_can('edit_post', $id) antes de editar/duplicar; manage_options nas configurações
Alterar outro tipo de post pelo formulário de eventos o ID enviado precisa ser do tipo ale_evento (get_post_type)
XSS armazenado em título, local, categoria e descrição entrada: sanitize_text_field / wp_kses_post; saída: esc_html, esc_attr, wp_kses_post
Links maliciosos (javascript: etc.) esc_url_raw ao salvar, esc_url ao exibir
Imagem arbitrária só ID de anexo (absint) que seja imagem (wp_attachment_is_image)
Valores inesperados em opções whitelist para frequência de repetição e estilo do cabeçalho; sanitize_key; datas validadas por formato estrito
Injeção de CSS pelas cores toda cor passa por sanitize_hex_color antes de ir para wp_add_inline_style
Criação em massa de posts repetição limitada a 24 cópias
Open redirect wp_safe_redirect
Reverse tabnabbing links externos com target="_blank" rel="noopener"
DOM XSS no front-end JS usa textContent, `