Integración de plantillas
La página del evento individual se renderiza con la plantilla propia del plugin, con ganchos de acción en los puntos donde las integraciones suelen necesitar añadir algo.
Los ganchos
La confirmación del registro de eventos usa el helper POM Theme de mt-125 (1.25rem), incluida la confirmación insertada por JavaScript. Mantén el plugin y el tema en versiones coincidentes del helper de rem al actualizar; los ajustes de espaciado personalizados deben apuntar a la nueva clase o al componente en lugar del helper retirado mt-20.
En orden de renderizado:
| Gancho | Posición |
|---|---|
pom_events_single_before_main_block |
Antes del bloque principal de la página |
pom_events_single_details_before_place |
En la barra lateral de detalles, antes del lugar |
pom_events_single_details_after_place |
En la barra lateral, después del lugar y el organizador |
pom_events_before_single_content |
Encima del contenido del evento |
pom_events_after_single_content |
Debajo del contenido del evento |
pom_events_single_before_related_posts |
Antes del bloque de contenido relacionado |
pom_events_single_after_related_posts |
Después de él |
pom_events_after_before_main_block |
Después del bloque principal |
Los ganchos de la barra lateral reciben el ID del evento; los demás no toman argumentos y se ejecutan dentro del bucle, por lo que get_the_ID() está disponible.
Renderizar un campo almacenado
El uso más común: imprimir un valor que la plantilla suministrada no imprime — el hashtag del evento, o un campo que hayas añadido tú mismo.
add_action( 'pom_events_single_details_after_place', function ( $post_id ) {
$meta = get_post_meta( $post_id, 'pom', true );
$hashtag = $meta['custom_hashtag'] ?? '';
if ( '' === $hashtag ) {
return;
}
printf(
'<div class="event-hashtag"><p class="h6 label">%s</p><p class="h5">%s</p></div>',
esc_html__( 'Hashtag', 'my-plugin' ),
esc_html( $hashtag )
);
}, 10, 1 );
Haz que tu bloque coincida con el marcado circundante para que no parezca añadido a la fuerza, y termina pronto cuando el valor esté vacío — la convención propia de la plantilla es que los campos vacíos no rendericen nada.
Añadir contenido alrededor de la descripción
add_action( 'pom_events_after_single_content', function () {
$event_id = get_the_ID();
// Print a sponsor block, a map, a programme.
} );
Filtrar valores que imprime la plantilla
Existen dos filtros de valor:
| Filtro | Propósito |
|---|---|
pom_events_single_meta_contact_number |
El número de contacto antes de imprimirse |
pom_events_event_form_inputs |
Las definiciones de campos del formulario de registro |
El primero es útil para dar formato a un número de manera consistente, o para sustituirlo por un número central:
add_filter( 'pom_events_single_meta_contact_number', function ( $number, $post_id ) {
return $number ? $number : get_option( 'my_default_events_phone' );
}, 10, 2 );
Cambiar los campos del formulario de registro
add_filter( 'pom_events_event_form_inputs', function ( $inputs ) {
$inputs['event_signup_company'] = array(
'label' => __( 'Company', 'my-plugin' ),
'args' => array(
'type' => 'text',
'class' => 'form-control',
'placeholder' => __( 'Company', 'my-plugin' ),
),
);
return $inputs;
} );
Añadir un campo lo renderiza. Almacenar su valor es tu responsabilidad — engancha la acción de registro y escribe lo que necesites. Consulta Ganchos del ciclo de vida del registro.
Navegación anterior y siguiente
La consulta detrás de las flechas es filtrable:
add_filter( 'pom_single_event_prev_next_args', function ( $args, $post_id ) {
// For example, keep navigation within the same category.
return $args;
}, 10, 2 );
Eventos relacionados en las entradas
El plugin imprime los eventos relacionados después del contenido de una entrada usando el propio gancho de después del contenido del tema. Para cambiar esa ubicación, desengancha el callback del plugin y renderízalo donde prefieras.
La plantilla de resultados
Los elementos de la lista de eventos se renderizan con la plantilla de resultados del plugin. Prefiere añadir alrededor de ella — con el filtro del formulario de búsqueda y tu propio estilo — en lugar de reemplazarla, para que las actualizaciones del plugin sigan funcionando.
Protege todo
Cada gancho de este artículo existe únicamente en el tema POM:
add_action( 'init', function () {
if ( ! post_type_exists( 'event' ) ) {
return;
}
add_action( 'pom_events_after_single_content', 'my_events_extra' );
}, 20 );