Columnas de la tabla de asistentes

La tabla de asistentes del editor de eventos, y las exportaciones CSV y XLS, pueden ampliarse con columnas adicionales.

Los tres hooks

Hook Tipo Propósito
pom_events_assistants_table_headers Filtro Las etiquetas de cabecera, usadas por la tabla y por las exportaciones
pom_events_assistants_table_columns Acción Renderiza celdas adicionales en una fila de la tabla
pom_events_export_users_content Filtro Añade valores a una fila exportada

Añadir una columna a la tabla

Dos pasos: añade la cabecera y luego renderiza la celda.

add_filter( 'pom_events_assistants_table_headers', function ( $headers ) {
    $headers['my_room'] = __( 'Room', 'my-plugin' );
    return $headers;
} );

add_action( 'pom_events_assistants_table_columns', function ( $assistant_id, $assistant_info ) {
    $room = get_user_meta( $assistant_id, 'my_room', true );
    echo '<td>' . esc_html( $room ? $room : '–' ) . '</td>';
}, 10, 2 );

$assistant_id es el ID de usuario del asistente; $assistant_info es su registro, con email, comments, tel, country y status.

Imprime con echo una <td> completa, y escapa todo. Imprime un guion para los valores vacíos, igual que las columnas propias del plugin.

Añadir una columna a las exportaciones

El filtro de cabeceras se comparte con las exportaciones, así que una cabecera que añadas también aparece allí. Proporciona el valor:

add_filter( 'pom_events_export_users_content', function ( $row, $assistant_id, $assistant_info ) {
    $row['my_room'] = get_user_meta( $assistant_id, 'my_room', true );
    return $row;
}, 10, 3 );

Usa la misma clave que la cabecera para que el valor caiga en la columna correcta.

Mantén ambas alineadas

Como el filtro de cabecera alimenta ambas superficies, añadir una cabecera sin proporcionar un valor de exportación produce una columna vacía en el archivo. Implementa los tres hooks juntos.

Orden de las columnas

Las cabeceras se renderizan en el orden del array. Para colocar una columna antes de las acciones, insértala en lugar de añadirla al final:

add_filter( 'pom_events_assistants_table_headers', function ( $headers ) {
    $actions = $headers['actions'] ?? null;
    unset( $headers['actions'] );

    $headers['my_room'] = __( 'Room', 'my-plugin' );

    if ( null !== $actions ) {
        $headers['actions'] = $actions;
    }

    return $headers;
} );

Escapado en las exportaciones

Los valores de exportación se escriben en un archivo, no en HTML. No los escapes como HTML; sanea como texto y ten en cuenta que la exportación usa puntos y coma como separadores, así que un valor que contenga uno afectará al archivo.

Cómo son las buenas columnas

  • Un número de socio, procedente de los metadatos del usuario.
  • Un tipo de entrada, procedente del pedido de WooCommerce.
  • Una marca de check-in, si la construyes; el plugin registra inscripciones, no asistencia.
  • Una respuesta por evento recogida por tu propio campo.

Qué no añadir

  • Cualquier cosa que haga la tabla más ancha de lo que puede renderizar. El panel no es una rejilla de datos.
  • Datos sensibles que no necesitan estar en pantalla. Todo el que pueda editar el evento los verá.
  • Valores que requieran una consulta por fila en una lista grande. La tabla renderiza cada inscripción.

Verificación

  1. Añade los tres hooks.
  2. Abre un evento con inscripciones y confirma que la columna se renderiza en las tres secciones.
  3. Confirma que los valores vacíos renderizan un guion en lugar de una celda vacía.
  4. Exporta a CSV y confirma la columna y sus valores.
  5. Exporta a XLS y confirma lo mismo.