WP Manifestindependent plugin directory
manifest / events / event-show-base

Event Show

Plugin de gestión avanzada de eventos para WordPress, desarrollado conforme a los requerimientos IEEE 830-1998 definidos en el documento SRS.

by Pryw00 · github.com/pryw00/event-show-base

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/pryw00/event-show-base/archive/refs/heads/main.zip

Sistema completo de gestión de eventos para WordPress con funcionalidades avanzadas de registro, notificaciones y administración.

Relación con Ibarra Vive: este repositorio es la versión base / standalone del plugin Event Show. Una variante evolucionada del mismo código vive como módulo en el plugin unificado ibarra-vive (modules/event-show/), que incluye cambios adicionales (p. ej. importación/exportación e iconos). Los cambios no se sincronizan automáticamente entre ambos.

Descripción

Event Show es un plugin completo para WordPress que permite crear, gestionar y promover eventos de manera profesional. Incluye sistema de registro de asistentes, notificaciones por email, múltiples vistas (grid, lista, calendario, carrusel), y un completo panel de administración.

Características principales

Gestión de Eventos

  • Custom Post Type dedicado para eventos
  • Metaboxes personalizados para fecha, hora, ubicación
  • Galería de imágenes para cada evento
  • Taxonomías: Categorías, Clasificación de edad, Organizadores, Lugares
  • Plantillas personalizables por evento

Sistema de Registro

  • Formulario de registro de asistentes
  • Control de capacidad máxima
  • Fecha límite de registro
  • Validación de 5 días de anticipación para usuarios no administradores
  • Exportación de asistentes a CSV
  • Prevención de registros duplicados

Visualización

  • Grid: Vista en cuadrícula responsiva
  • Lista: Vista de lista detallada
  • Calendario: Agrupación por meses
  • Carrusel: Con countdown y navegación automática
  • Slider: Panel informativo con slider de imágenes con efecto 3D
  • Página de evento individual completa
  • Archivo de eventos

Notificaciones

  • Email de confirmación al asistente
  • Notificación al administrador de nuevos registros
  • Recordatorios de eventos
  • Notificación de nuevos eventos enviados
  • Plantillas HTML personalizables

Integraciones

  • Exportación a formato iCal
  • Integración con Google Calendar
  • Schema.org para SEO
  • Botones de compartir en redes sociales
  • Access Control: Configuración de roles con publicación directa de eventos

Integración con Access Control

Si tienes instalado el plugin Access Control, puedes configurar qué roles de usuarios tienen permiso para publicar eventos directamente sin necesidad de aprobación del administrador.

Configuración:

  1. Ve a "Eventos > Configuración"
  2. En la sección "Roles con Publicación Directa" selecciona los roles de Access Control que podrán publicar eventos automáticamente
  3. Los usuarios con estos roles verán sus eventos publicados inmediatamente al enviarlos desde el formulario frontend

Notas importantes:

  • Los administradores siempre pueden publicar directamente
  • Si "Requerir Aprobación" está desactivado, todos los usuarios pueden publicar directamente
  • Esta configuración solo afecta eventos enviados desde el formulario frontend

Panel de Usuario

  • Dashboard personalizado
  • Gestión de eventos propios
  • Administración de organizadores
  • Administración de lugares
  • Información de perfil

Administración

  • Columnas personalizadas en listado
  • Sistema de logs/auditoría
  • Exportación de asistentes
  • Campos adicionales para organizadores y lugares
  • Configuración centralizada

Requisitos

  • WordPress 5.0 o superior
  • PHP 7.4 o superior
  • MySQL 5.6 o superior

Instalación

Desde un archivo ZIP

  1. Comprime la carpeta event-show-base (sin la carpeta .git) en event-show-base.zip
  2. En WordPress ve a Plugins > Añadir nuevo > Subir plugin y selecciona el ZIP
  3. Activa el plugin
  4. Configura las opciones desde "Eventos > Configuración"

Instalación manual

  1. Descarga o clona el repositorio: git clone https://github.com/Pryw00/event-show-base.git
  2. Sube la carpeta event-show-base a /wp-content/plugins/
  3. Activa el plugin desde el menú 'Plugins' en WordPress
  4. Configura las opciones desde "Eventos > Configuración"

Evita activar este plugin junto con ibarra-vive: ambos definen los mismos shortcodes (event_show_*) y clases, lo que puede generar conflictos.

Uso

Crear un evento

  1. Ve a "Eventos > Añadir nuevo"
  2. Completa los campos obligatorios:
    • Título del evento
    • Descripción
    • Fecha y hora de inicio/fin
  3. Selecciona categoría, organizador y lugar
  4. Configura opciones de registro (opcional)
  5. Publica el evento

Shortcodes disponibles

Vista Grid

[event_show_grid category="" limit="12" columns="3" show="upcoming" pagination_type="default" per_page="12"]

Parámetros:

  • category: ID de categoría para filtrar
  • limit: Número de eventos a mostrar (usar -1 para todos los eventos)
  • columns: Número de columnas (2, 3 o 4)
  • show: "upcoming" (próximos, default), "past" (pasados), "all" (todos)
  • pagination_type: Tipo de paginación - "default" (números), "infinite" (scroll infinito), "load_more" (botón cargar más)
  • per_page: Eventos por página (solo con paginación activa)

Vista Lista

[event_show_list category="" limit="10" show="upcoming" pagination_type="default" per_page="10"]

Parámetros:

  • category: ID de categoría para filtrar
  • limit: Número de eventos a mostrar (usar -1 para todos los eventos)
  • show: "upcoming" (próximos, default), "past" (pasados), "all" (todos)
  • pagination_type: Tipo de paginación - "default" (números), "infinite" (scroll infinito), "load_more" (botón cargar más)
  • per_page: Eventos por página (solo con paginación activa)

Vista Calendario

[event_show_calendar category="" show="upcoming"]

Parámetros:

  • category: ID de categoría para filtrar
  • show: "upcoming" (próximos, default), "past" (pasados), "all" (todos)

Carrusel

[event_show_carousel limit="5" autoplay="true" show="upcoming"]

Parámetros:

  • limit: Número de eventos en el carrusel
  • autoplay: Activar rotación automática (true/false)
  • show: "upcoming" (próximos, default), "past" (pasados), "all" (todos)

Slider

[event_show_slider limit="5" autoplay="true" autoplay_speed="5000" show="upcoming"]

Muestra eventos con un diseño moderno: panel de información a la izquierda y slider de imágenes/posters a la derecha con efecto de profundidad.

Parámetros:

  • limit: Número de eventos en el slider
  • category: ID de categoría para filtrar
  • autoplay: Activar rotación automática (true/false)
  • autoplay_speed: Velocidad de rotación en milisegundos (default: 5000)
  • show: "upcoming" (próximos, default), "past" (pasados), "all" (todos)

Formulario de registro

[event_show_registration event_id="123" button_text="Registrarse"]

Muestra un botón que al hacer clic abre un modal con el formulario de registro de asistentes.

Parámetros:

  • event_id: ID del evento (por defecto usa el ID del post actual)
  • button_text: Texto del botón (por defecto: "Registrarse")

Formulario de envío

[event_show_submit_form]

Permite a usuarios registrados enviar eventos para revisión.

Dashboard de usuario

[event_show_dashboard]

Muestra el panel de control del usuario actual.

Taxonomías

Categorías de Evento

Jerarquía de categorías para organizar eventos (ej: Música, Deportes, Arte).

Clasificación de Edad

Restricción por edad (ej: Todos los públicos, +18, Familiar).

Organizadores

Entidades que organizan eventos. Campos adicionales:

  • Teléfono
  • Email
  • Sitio web
  • Imagen/logo

Lugares

Ubicaciones donde se realizan eventos. Campos adicionales:

  • Dirección completa
  • URL del mapa
  • Imagen del lugar

Registro de asistentes

El sistema de registro incluye:

  1. Validación de capacidad: No permite registros si se alcanzó el límite
  2. Validación de fecha límite: Respeta la fecha límite configurada
  3. Validación de 5 días: Usuarios no administradores deben registrar eventos con 5+ días de anticipación
  4. Prevención de duplicados: Un email solo puede registrarse una vez por evento
  5. Confirmación automática: Envío de email de confirmación

Exportar asistentes

Desde el listado de eventos:

  1. Pasa el mouse sobre el evento
  2. Click en "Exportar asistentes"
  3. Se descargará un archivo CSV con todos los datos

Sistema de Logs

Registra todas las acciones importantes:

  • Creación de eventos
  • Registros de asistentes
  • Actualizaciones
  • Eliminaciones

Acceso: "Eventos > Logs del Sistema"

Estructura de archivos

event-show-base/
├── assets/
│   ├── css/
│   │   ├── admin.css
│   │   └── public.css
│   └── js/
│       ├── admin.js
│       └── public.js
├── includes/
│   ├── class-event-show-post-types.php
│   ├── class-event-show-taxonomies.php
│   ├── class-event-show-database.php
│   ├── class-event-show-metaboxes.php
│   ├── class-event-show-attendees.php
│   ├── class-event-show-notifications.php
│   ├── class-event-show-logger.php
│   └── class-event-show-helpers.php
├── admin/
│   ├── class-event-show-admin.php
│   ├── class-event-show-admin-columns.php
│   └── class-event-show-settings.php
├── public/
│   ├── class-event-show-public.php
│   ├── class-event-show-shortcodes.php
│   ├── class-event-show-templates.php
│   └── class-event-show-ajax.php
├── templates/
│   ├── single-evento.php
│   ├── single-event.php
│   ├── archive-evento.php
│   ├── layouts/
│   │   ├── grid.php
│   │   ├── list.php
│   │   ├── calendar.php
│   │   ├── carousel.php
│   │   └── slider.php
│   ├── partials/
│   │   └── event-card.php
│   ├── registration-form.php
│   ├── submit-event-form.php
│   └── user-dashboard.php
├── languages/
│   └── event-show-base.pot
├── event-show.php
└── README.md

Base de datos

El plugin crea 3 tablas personalizadas:

wp_event_show_attendees

Almacena registros de asistentes:

  • ID
  • event_id
  • name
  • email
  • phone
  • num_attendees
  • registration_date
  • ip_address

wp_event_show_logs

Sistema de auditoría:

  • ID
  • action
  • object_type
  • object_id
  • user_id
  • ip_address
  • created_at

wp_event_show_termmeta

Metadatos de taxonomías (organizadores y lugares).

Hooks y Filtros

Actions

// Después de registrar un asistente
do_action('event_show_after_register', $attendee_id, $event_id, $data);

// Después de crear un evento
do_action('event_show_after_create_event', $event_id, $post_data);

// Antes de enviar email
do_action('event_show_before_send_email', $to, $subject, $message);

Filters

// Modificar plantilla de email
add_filter('event_show_email_template', function($template, $type) {
    // Modificar $template
    return $template;
}, 10, 2);

// Modificar días de anticipación requeridos
add_filter('event_show_advance_days', function($days) {
    return 7; // Cambiar a 7 días
});

// Modificar argumentos de query de eventos
add_filter('event_show_query_args', function($args) {
    // Modificar $args
    return $args;
});

Personalización

Estilos CSS

El plugin carga estilos con baja especificidad que pueden ser sobrescritos fácilmente:

/* En el tema */
.event-card {
  /* Tus estilos personalizados */
}

Templates

Puedes sobrescribir cualquier template copiándolo a tu tema:

tu-tema/
└── event-show/
    ├── single-evento.php
    ├── archive-evento.php
    └── layouts/
        ├── grid.php
        └── ...

Traducciones

El plugin está preparado para traducción. Archivo .pot incluido en /languages/.

Para crear traducción:

  1. Usa Poedit u otra herramienta
  2. Carga event-show-base.pot
  3. Traduce las cadenas
  4. Guarda como event-show-base-{locale}.mo
  5. Coloca en /wp-content/languages/plugins/

Seguridad

El plugin implementa:

  • ✅ Nonces en todos los formularios AJAX
  • ✅ Sanitización de entradas con sanitize_text_field(), sanitize_email(), etc.
  • ✅ Escapado de salidas con esc_html(), esc_url(), esc_attr()
  • ✅ Verificación de permisos con current_user_can()
  • ✅ Prepared statements para queries SQL
  • ✅ Validación de datos
  • ✅ Prevención de SQL injection
  • ✅ Prevención de XSS

Rendimiento

Optimizaciones implementadas:

  • Carga condicional de assets (solo cuando es necesario)
  • Queries optimizadas con índices
  • Lazy loading de imágenes
  • Minificación recomendada de CSS/JS
  • Caché de consultas frecuentes
  • Limpieza automática de logs antiguos (90 días)

Compatibilidad

Probado con:

  • WordPress 5.0+
  • PHP 7.4, 8.0, 8.1, 8.2
  • Temas principales: Twenty Twenty-Four, Astra, GeneratePress, OceanWP
  • Plugins de página: Elementor, Gutenberg

Desarrollo

El plugin no requiere proceso de compilación (PHP, CSS y JS planos). Para generar un paquete instalable basta con comprimir la carpeta del plugin excluyendo .git y los archivos ignorados:

# desde la carpeta padre
zip -r event-show-base.zip event-show-base -x "event-show-base/.git/*"

Documentación adicional: INSTALLATION.md, TECHNICAL.md, INTEGRATION-ACCESS-CONTROL.md.

Soporte

Para reportar bugs o solicitar características abre un issue en https://github.com/Pryw00/event-show-base/issues

Changelog

El historial completo de cambios está en CHANGELOG.md.

1.0.0 - 2024-01-01

  • Release inicial
  • CPT para eventos
  • Sistema de registro de asistentes
  • 7 shortcodes
  • 4 taxonomías
  • Panel de usuario
  • Sistema de notificaciones
  • Exportación CSV
  • Integración calendario
  • Logs de auditoría

Créditos

Desarrollado siguiendo el estándar IEEE 830-1998 para especificaciones de software.

Licencia

GPL v2 or later

Repositorio

https://github.com/Pryw00/event-show-base

Autor

Wilson Yépez (PRYW) — @Pryw00


¿Necesitas ayuda? Consulta la documentación completa en nuestro sitio web o contacta con soporte.