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.