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 );

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 );