Hooks de estado de los asistentes
El punto en el que engancharse cuando una persona organizadora mueve una inscripción entre Confirmed, Waiting list y Cancelled.
La acción
add_action( 'pom_events_after_assistants_info_update', function ( $event_id, $user_id ) {
// Runs after the new status has been saved.
}, 10, 2 );
Se dispara después de que se haya guardado el estado de la inscripción y antes de que la fila actualizada se devuelva a la pantalla.
Leer el nuevo estado
La acción pasa identificadores, no el estado. Léelo desde el evento:
add_action( 'pom_events_after_assistants_info_update', function ( $event_id, $user_id ) {
$assistants = get_post_meta( $event_id, 'event_assistants', true );
$status = $assistants[ $user_id ]['status'] ?? '';
// '' = confirmed, 'waiting-list', 'cancelled'
}, 10, 2 );
Un estado vacío significa confirmado. Ese es el valor que hay que comprobar para detectar una promoción.
El uso más valioso: avisos de promoción
Promocionar a alguien desde la lista de espera no avisa a nadie, y esa es la mayor carga manual que conlleva gestionar un evento completo. Automatizarlo es sencillo:
add_action( 'pom_events_after_assistants_info_update', function ( $event_id, $user_id ) {
$assistants = get_post_meta( $event_id, 'event_assistants', true );
if ( ! isset( $assistants[ $user_id ] ) || '' !== $assistants[ $user_id ]['status'] ) {
return; // Not a promotion to confirmed.
}
$user = get_userdata( $user_id );
$event = get_post( $event_id );
if ( ! $user || ! $event ) {
return;
}
wp_mail(
$user->user_email,
sprintf( __( 'A place is available at %s', 'my-plugin' ), $event->post_title ),
my_plugin_promotion_body( $event )
);
}, 10, 2 );
Dos advertencias antes de ponerlo en marcha:
- No puedes saber cuál era el estado anterior solo con esta acción. Volver a pasar una inscripción cancelada a confirmada también produce un estado vacío, así que también enviará el aviso. Si eso importa, registra tú mismo el estado anterior antes del cambio.
- Las personas organizadoras pueden esperar escribir personalmente. Automatizar el mensaje cambia su flujo de trabajo; acuérdalo antes.
Otros usos
- Registrar los cambios de estado, algo que el plugin no hace. Útil cuando varias personas gestionan el mismo evento.
- Mantener sincronizada una lista externa — un CRM, un sistema de registro de llegadas.
- Avisar a la persona organizadora cuando se cancela a alguien.
- Recalcular tus propios recuentos, si muestras la disponibilidad en otro sitio.
La eliminación es independiente
Eliminar de forma permanente una inscripción cancelada no dispara esta acción. Si tu integración refleja la lista de asistentes en otro lugar, reconcilia periódicamente en lugar de depender de un evento para cada eliminación.
La capacidad no se aplica
La promoción manual no comprueba la capacidad del evento. Si a tu integración le importa, compara tú mismo el recuento de confirmados con available_space:
$meta = get_post_meta( $event_id, 'pom', true );
$capacity = (int) ( $meta['available_space'] ?? 0 );
Una capacidad de cero significa ilimitada.
Verifica
- Mueve una inscripción entre cada par de estados.
- Confirma que tu controlador se ejecuta cada vez y lee el estado correcto.
- Confirma que una promoción se distingue de una cancelación.
- Confirma que una eliminación permanente no lo dispara, de modo que tu reconciliación cubra ese caso.