Modelo de contenido

El tipo de contenido, sus taxonomías y dónde viven los datos de los eventos.

El tipo de contenido

Propiedad Valor
Slug event
Público Sí, consultable públicamente, con un archivo
Base de reescritura event
Jerárquico No
Admite title, editor, author, thumbnail, excerpt, custom-fields
REST Activado, base event

El registro depende del tema activo: en un tema cuya plantilla no sea pom, el tipo de contenido no se registra. Compruébalo siempre con post_type_exists( 'event' ).

Taxonomías

Taxonomía Estructura Reescritura Base REST
event_type Jerárquica event_type event_types
event_category Jerárquica event_category event_categories
post_tag Plana, compartida con las entradas post_tag Núcleo

post_tag es la taxonomía de etiquetas normal del sitio, registrada también para los eventos. Por tanto, un archivo de etiquetas puede contener a la vez eventos y entradas.

Dónde viven los datos de los eventos

Dos capas, y la distinción importa:

El array de metadatos pom contiene los valores editables del panel de eventos:

event_start_datetime · event_end_datetime · date_format · event_place · introductory_text · organized_by · available_button_label · custom_hashtag · contact_number · additional_links · waiting_list_button_label · finished_event_button_label · optional_form_fields · available_space

Metadatos derivados e independientes escritos al guardar:

Clave Contenido
event_start_date El inicio como Y-m-d, para consultar y ordenar
event_end_date El fin como Y-m-d
event_start_datetime La fecha y hora de inicio
event_end_datetime La fecha y hora de fin
hide_event_date El interruptor de ocultación de fecha por evento
event_all_day El interruptor de día completo
event_assistants El mapa de inscripciones
attending_users Los IDs de los usuarios que asistirán

Por qué las fechas existen dos veces

Los valores de fecha y hora son lo que introduce quien edita y lo que imprimen las plantillas. Los valores Y-m-d se normalizan al guardar precisamente para que puedan compararse y ordenarse en una consulta de metadatos.

Consulta sobre event_start_date y event_end_date. Muestra a partir de las fechas y horas. Consulta Recetas de consulta de eventos.

El mapa de asistentes

event_assistants es un array indexado por ID de usuario:

$assistants = get_post_meta( $event_id, 'event_assistants', true );

// [
//   42 => [
//     'email'    => 'person@example.com',
//     'comments' => 'Vegetarian',
//     'tel'      => '+34 600 000 000',
//     'country'  => 'Spain',
//     'status'   => '',            // '' | 'waiting-list' | 'cancelled'
//   ],
// ]

Un status vacío significa confirmado. Por eso registrarse crea un usuario de WordPress: la clave de este mapa es un ID de usuario.

attending_users contiene un array de IDs de usuario, y las cuentas de usuario llevan además un array de metadatos attended_events con los IDs de los eventos.

Leer un evento de forma segura

$meta  = get_post_meta( $event_id, 'pom', true );
$start = $meta['event_start_datetime'] ?? '';
$place = $meta['event_place'] ?? '';

$start_day = get_post_meta( $event_id, 'event_start_date', true ); // Y-m-d

Trata cada clave como opcional. Los eventos creados antes de que existiera un campo, o guardados sin él, simplemente no lo llevan.

Escribir datos de eventos

El editor escribe el array pom como un todo. Si necesitas escribir en él mediante código, léelo, modifica la clave y vuelve a escribirlo — y actualiza los derivados event_start_date y event_end_date si cambiaste las fechas y horas, o las consultas no coincidirán con la página.

Estados

Los eventos usan los estados normales de WordPress. Los listados públicos consultan publish.