Ces hooks agissent sur les événements et leurs dates. Ils servent à suivre la reconstruction des dates d’un événement récurrent, à faire le ménage après une suppression définitive ou à regrouper des traductions. D’autres modifient le balisage Event, les adresses des événements et ce que HappenBoard Pro envoie à Google Calendar et Outlook.
Côté édition, voyez les événements récurrents et les sites multilingues. Si les hooks sont nouveaux pour vous, commencez par Étendre HappenBoard avec les hooks.
Comment les dates d’un événement sont stockées
Chaque événement est un post. Ses dates sont dans une table propre à HappenBoard : une ligne pour un événement unique, une ligne par date pour un événement récurrent. Chaque ligne a un numéro de séquence (0 pour la première date). Les lignes sont reconstruites à partir des réglages de l’événement : ne les modifiez jamais directement.
À chaque enregistrement :
happenboard_occurrences_syncingse déclenche alors que les anciennes lignes sont encore là.- Les anciennes lignes sont supprimées, puis les nouvelles écrites.
happenboard_occurrences_changedse déclenche après chaque étape.
Quand un événement est supprimé définitivement (la corbeille retire seulement ses lignes) :
- Ses lignes sont supprimées et
happenboard_occurrences_changedse déclenche. happenboard_event_deletingse déclenche. Le post, ses métadonnées et ses participants sont encore lisibles.- Chaque participant est supprimé et déclenche
happenboard_attendee_deleted.
Événements traduits
Avec WPML ou Polylang, chaque traduction d’un événement est un post à part, avec ses propres dates et ses propres participants. happenboard_public_occurrence_clauses limite les listes publiques à la langue courante. Les traductions partagent leurs places : les inscriptions de toutes les traductions s’imputent sur la capacité de la traduction dans la langue par défaut. happenboard_translation_group décide quels posts forment ce groupe.
happenboard_occurrences_syncing
Se déclenche au début de chaque reconstruction des dates d’un événement, quand ses lignes contiennent encore les anciennes dates. Utile pour noter ce qu’une modification va changer, puis comparer à la fin de la requête.
Signature
do_action( 'happenboard_occurrences_syncing', int $event_id, bool $announce )
Paramètres
-
$event_idint - L’événement dont les dates vont être reconstruites.
-
$announcebool truequand la reconstruction vient d’une modification (un enregistrement, une date annulée ou déplacée).falsequand elle recalcule seulement les lignes : après une mise à jour de l’extension ou un changement de fuseau horaire du site.
Exemple
add_action(
'happenboard_occurrences_syncing',
function ( int $event_id, bool $announce ): void {
global $wpdb;
if ( ! $announce ) {
return;
}
// Les lignes contiennent encore les dates d'avant la modification.
$GLOBALS['my_old_dates'][ $event_id ] = $wpdb->get_col(
$wpdb->prepare(
"SELECT start_utc FROM {$wpdb->prefix}happenboard_occurrences WHERE event_id = %d AND is_cancelled = 0",
$event_id
)
);
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour recevoir$announce. - Une même requête peut reconstruire les dates d’un événement plusieurs fois : comparez à la fin de la requête (sur
shutdown). HappenBoard fait de même en priorité 10 : il note la date de chaque participant, puis écrit à ceux dont la date a été annulée ou déplacée. - Il ne se déclenche pas quand un événement est mis à la corbeille ou supprimé définitivement : ces opérations retirent seulement les lignes, ce qui déclenche
happenboard_occurrences_changed.
happenboard_occurrences_changed
Se déclenche après l’écriture ou la suppression des lignes de dates d’un événement : enregistrement, corbeille, suppression définitive, import, WP-CLI ou prolongation quotidienne d’une longue série. Utile pour vider ce que vous mettez en cache à partir des dates.
Signature
do_action( 'happenboard_occurrences_changed', int $event_id )
Paramètres
-
$event_idint - L’événement dont les lignes ont changé.
Exemple
add_action(
'happenboard_occurrences_changed',
function ( int $event_id ): void {
// Notre liste en cache des prochaines dates est périmée.
delete_transient( 'my_plugin_next_dates_' . $event_id );
}
);
Remarques
- Un seul argument.
- Un enregistrement le déclenche deux fois : à la suppression des anciennes lignes, puis à l’écriture des nouvelles. Lors du premier appel l’événement n’a aucune ligne : ne considérez pas ce que vous lisez alors comme définitif.
- La mise à la corbeille retire les lignes jusqu’à la restauration. La suppression définitive les retire avant le déclenchement de
happenboard_event_deleting. - HappenBoard vide son flux iCal en cache en priorité 10 et, en priorité 20, donne une date aux participants d’un événement récurrent qui n’en ont pas (
happenboard_attendee_dates_assigned). Gardez un callback léger : un import ou une modification groupée le déclenche pour chaque événement.
happenboard_public_occurrence_clauses
Ajoute du SQL à chaque lecture publique des dates : blocs Calendar, Upcoming Events, Events List, Events Grid et Event Query Loop, et flux iCal du site. Utile pour exclure des événements des listes publiques, comme HappenBoard le fait avec WPML et Polylang pour n’afficher qu’une langue.
Signature
apply_filters( 'happenboard_public_occurrence_clauses', array{join:string,where:string} $clauses, string $event_column, string $fallback )
Paramètres
-
$clausesarray{join:string,where:string} - Fragments SQL, vides par défaut.
joinest ajouté après la jointure sur la table des posts (aliasp; la table des dates esto),whereest combiné au reste par AND. Les deux doivent être entièrement préparés. -
$event_columnstring - Colonne qui contient l’identifiant de l’événement. Toujours
'o.event_id'aujourd’hui. -
$fallbackstring - Ce qu’il faut afficher quand aucune langue n’est active :
''pour toutes les langues,'default'pour la seule langue par défaut (le flux iCal du site).
Valeur de retour
array{join:string,where:string}
Les fragments à appliquer. Un retour qui n’est pas un tableau, ou un fragment qui n’est pas une chaîne, n’ajoute rien.
Exemple
add_filter(
'happenboard_public_occurrence_clauses',
function ( $clauses, $event_column ) {
global $wpdb;
// Exclure les événements réservés aux membres de toutes les listes publiques.
$condition = $wpdb->prepare(
"NOT EXISTS ( SELECT 1 FROM {$wpdb->postmeta} pm WHERE pm.post_id = {$event_column} AND pm.meta_key = %s )",
'_my_members_only'
);
$clauses['where'] = '' === $clauses['where']
? $condition
: '( ' . $clauses['where'] . ' ) AND ' . $condition;
return $clauses;
},
20,
2
);
Remarques
- Deux ou trois arguments : enregistrez avec
10, 2pour la colonne,10, 3pour le repli de langue. - Complétez les fragments reçus. Avec WPML ou Polylang, HappenBoard ajoute une jointure de langue en priorité 10 : renvoyer des chaînes neuves la supprime, et chaque traduction réapparaît.
- Préparez chaque valeur avec
$wpdb->prepare(). HappenBoard double lui-même chaque%littéral pour un second passage dansprepare(): ne les doublez pas. - Seules les lectures limitées aux événements publiés l’exécutent. Le calendrier d’administration, la date affichée sur une page d’événement et les abilities IA l’ignorent. Le cache du flux iCal est indexé sur le résultat : renvoyez le même SQL pour un même contexte de requête.
happenboard_translation_group
Filtre les traductions d’un événement : les posts dont les inscriptions partagent ses places et sa liste de participants. HappenBoard le remplit à partir de WPML ou Polylang ; utilisez-le pour une autre extension multilingue qui garde chaque traduction dans son propre post.
Signature
apply_filters( 'happenboard_translation_group', array{ids:array<int,int>,original:int,languages:array<int,string>} $group, int $event_id )
Paramètres
-
$grouparray{ids:array<int,int>,original:int,languages:array<int,string>} ids: toutes les traductions, l’événement compris, par identifiant croissant.original: la traduction qui porte la capacité partagée (celle de la langue par défaut, sinon la source, sinon le plus petit identifiant).languages: le code de langue de chaque traduction (fr), indexé par identifiant, affiché dans la liste et l’export des participants. Sans traduction : l’événement seul, original de lui-même.-
$event_idint - L’événement demandé.
Valeur de retour
array{ids:array<int,int>,original:int,languages:array<int,string>}
Le groupe. HappenBoard ajoute toujours l’événement à ids, prend le plus petit identifiant si original n’en fait pas partie et ignore les langues des non-membres. Un retour qui n’est pas un tableau laisse l’événement seul.
Exemple
add_filter(
'happenboard_translation_group',
function ( $group, $event_id ) {
// Notre extension relie chaque copie à son original par une métadonnée.
$original = (int) get_post_meta( $event_id, '_my_translation_of', true ) ?: $event_id;
$copies = array_map( 'intval', (array) get_post_meta( $original, '_my_translations', true ) );
if ( array() === array_filter( $copies ) ) {
return $group;
}
$group['ids'] = array_merge( array( $original ), $copies );
$group['original'] = $original;
foreach ( $group['ids'] as $id ) {
$group['languages'][ $id ] = (string) get_post_meta( $id, '_my_language', true );
}
return $group;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Le groupe est lu une fois par requête et mémorisé pour chaque membre : renvoyez le même groupe quel que soit le membre demandé.
- La capacité de l’original vaut pour tout le groupe, les inscriptions de chaque traduction s’y imputent et un e-mail ne s’inscrit qu’une fois dans le groupe. HappenBoard Pro vend aussi les billets du groupe sur chaque traduction et compte leurs check-ins ensemble.
- Les groupes mémorisés sont oubliés quand un événement est enregistré ou quand WPML ou Polylang relient des traductions. Si votre extension les relie autrement, appelez ensuite
\HappenBoard\Integration\Multilingual\TranslationGroup::flush().
happenboard_event_submitted
Se déclenche quand l’événement proposé par un visiteur avec le bloc Event Submission Form a été enregistré en attente de relecture, avec tous ses détails. Utile pour prévenir un canal, étiqueter la proposition ou l’envoyer vers une file de modération externe.
Signature
do_action( 'happenboard_event_submitted', int $post_id, array<string,string> $data )
Paramètres
-
$post_idint - Le nouvel événement. Son statut vaut toujours
pending. -
$dataarray<string,string> - Trois clés :
submitter_name,submitter_email(sans espaces superflus, en minuscules) ettitle.
Exemple
add_action(
'happenboard_event_submitted',
function ( $post_id, $data ) {
// Garder la trace de l'auteur et étiqueter l'événement pour l'équipe de relecture.
update_post_meta( $post_id, '_my_submitter_ref', sanitize_email( $data['submitter_email'] ) );
wp_set_object_terms( $post_id, 'needs-review', 'happenboard_tag', true );
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Le reste est déjà enregistré sur le post : dates et fuseau horaire en métadonnées
_happenboard_*, l’auteur dans_happenboard_submitter_nameet_happenboard_submitter_email, la catégorie éventuelle en termehappenboard_category. - Il ne se déclenche jamais pour une proposition refusée (formulaire désactivé, connexion requise, trop de tentatives, échec Turnstile) ni pour une proposition qu’Akismet classe en spam. Les événements créés dans l’administration, par import ou via l’API REST ne le déclenchent pas.
- HappenBoard Pro écrit au modérateur depuis son propre callback en priorité 10. Le vôtre s’exécute en plus.
happenboard_event_deleting
Se déclenche quand un événement est supprimé définitivement, avant que HappenBoard ne supprime ses participants un par un. Utile pour supprimer ce que votre extension garde pour chaque événement.
Signature
do_action( 'happenboard_event_deleting', int $event_id, array<int,int> $attendee_ids )
Paramètres
-
$event_idint - L’événement en cours de suppression.
-
$attendee_idsarray<int,int> - Identifiants de ses participants, sur le point d’être supprimés. Sur un événement traduit, seulement ceux inscrits sur cette traduction.
Exemple
add_action(
'happenboard_event_deleting',
function ( int $event_id, array $attendee_ids ): void {
global $wpdb;
// Supprimer ce que notre extension stocke pour cet événement.
$wpdb->delete( $wpdb->prefix . 'my_event_stats', array( 'event_id' => $event_id ), array( '%d' ) );
error_log( sprintf( 'Event %d deleted with %d attendee(s).', $event_id, count( $attendee_ids ) ) );
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour recevoir les identifiants des participants. - Seule une suppression définitive le déclenche : depuis la corbeille,
wp_delete_post( $id, true ), une suppression forcée par REST ou WP-CLI, l’abilitydelete-event. La mise à la corbeille ne supprime rien. - Le post, ses métadonnées et ses participants sont encore lisibles. Ses lignes de dates ont déjà disparu : lisez les dates dans les métadonnées de l’événement, pas dans la table des dates.
- Chaque participant est ensuite supprimé et déclenche
happenboard_attendee_deleted. HappenBoard Pro écoute ici d’abord pour supprimer billets, réservations de places, ventes et check-ins ; quand une seule traduction est supprimée, il déplace les billets vers une traduction qui reste.
happenboard_event_description_allowed_html
Filtre le HTML autorisé dans le bloc Event Description. Le bloc applique the_content (ou the_excerpt avec son réglage Excerpt only), puis wp_kses() retire toute balise et tout attribut absents de cette liste.
Signature
apply_filters( 'happenboard_event_description_allowed_html', array<string,array<string,mixed>> $allowed )
Paramètres
-
$allowedarray<string,array<string,mixed>> - Liste KSES, nom de balise vers attributs autorisés :
wp_kses_allowed_html( 'post' )plusiframe,video,audio,source,tracket les champs des blocs de formulaire HappenBoard.
Valeur de retour
array<string,array<string,mixed>>
La liste transmise à wp_kses(). Elle est convertie avec (array) : null ou false retire toutes les balises.
Exemple
add_filter(
'happenboard_event_description_allowed_html',
function ( $allowed ) {
// Autoriser les sections repliables dans les descriptions.
$allowed['details'] = array( 'open' => true, 'class' => true );
$allowed['summary'] = array( 'class' => true );
return $allowed;
}
);
Remarques
- Un seul argument.
- Complétez la liste plutôt que de retirer ce que le bloc ajoute. Sans ces entrées, les iframes oEmbed, les médias hébergés sur le site, ou un bloc RSVP Form ou Ticket Picker placé dans la description ne fonctionnent plus.
- Il s’exécute après
the_content: il ne peut pas rétablir un balisage qu’une autre extension a retiré. Il ne s’exécute pas pour un événement protégé par mot de passe (le bloc affiche le formulaire de mot de passe) ni pour une description vide.
happenboard_schema_event_type
Définit le @type du JSON-LD Event. Renvoyez un sous-type d’Event de schema.org (MusicEvent, Festival, SportsEvent…) pour que les moteurs de recherche classent l’événement plus finement.
Signature
apply_filters( 'happenboard_schema_event_type', string $type, int $event_id, \WP_Post $post )
Paramètres
-
$typestring - Par défaut
'Event'. -
$event_idint - L’identifiant de l’événement.
-
$post\WP_Post - Le post de l’événement.
Valeur de retour
string
La valeur écrite dans @type, sans contrôle.
Exemple
add_filter(
'happenboard_schema_event_type',
function ( $type, $event_id, $post ) {
// Les concerts sont des événements musicaux pour les moteurs de recherche.
if ( has_term( 'concerts', 'happenboard_category', $post ) ) {
return 'MusicEvent';
}
return $type;
},
10,
3
);
Remarques
- Trois arguments : enregistrez avec
10, 3. - Il s’exécute en premier dans la chaîne du balisage, et
happenboard_schema_eventpeut encore réécrire@typeensuite. - Renvoyez un sous-type d’Event. Un autre type garde des propriétés d’Event comme
startDate, et Google signale des données structurées invalides.
happenboard_schema_event
Filtre le JSON-LD Event complet juste avant son affichage sur la page de l’événement et sa réponse par GET /happenboard/v1/events/{id}/schema. Utile pour ajouter des propriétés ou réécrire ce que HappenBoard a construit.
Signature
apply_filters( 'happenboard_schema_event', array<string,mixed> $schema, int $event_id, \WP_Post $post )
Paramètres
-
$schemaarray<string,mixed> - Le contenu. Contient toujours
@context,@type,name,description,startDate,endDate,eventStatus,inLanguage,url,eventAttendanceModeetlocation(unVirtualLocationsans lieu).image,organizer,offers,isAccessibleForFree,maximumAttendeeCapacityetremainingAttendeeCapacityapparaissent quand ils s’appliquent. -
$event_idint - L’identifiant de l’événement.
-
$post\WP_Post - Le post de l’événement, déjà chargé.
Valeur de retour
array<string,mixed>|null
Le tableau à encoder. null retire le JSON-LD de la page et fait répondre 404 à la route REST. Tout autre type provoque une erreur fatale TypeError.
Exemple
add_filter(
'happenboard_schema_event',
function ( $schema, $event_id, $post ) {
// Ajouter la tranche d'âge et les étiquettes de l'événement.
$schema['typicalAgeRange'] = (string) get_post_meta( $event_id, '_my_age_range', true );
$schema['keywords'] = wp_get_post_terms( $post->ID, 'happenboard_tag', array( 'fields' => 'names' ) );
return $schema;
},
10,
3
);
Remarques
- Trois arguments : enregistrez avec
10, 3. startDateetendDatesont ceux de la date décrite par la page : celle en cours, sinon la suivante, sinon la dernière. Un événement avec des billets dont aucun n’est en vente n’a pas d’offerset n’est pas indiqué gratuit.- Sur la page de l’événement, il ne s’exécute pas quand
happenboard_schema_disablerenvoie true ou que SEOPress a un balisage Event manuel pour ce post. La route REST ne vérifie ni l’un ni l’autre. - Les brouillons, les aperçus et les événements sans aucune date ne l’atteignent jamais.
happenboard_event_rewrite_slug
Définit la base des événements, le premier segment de chaque adresse : les événements sous /{base}/{event}/, l’archive sous /{base}/, la page de toutes les dates sous /{base}/{event}/all-dates/. Il prend le pas sur le champ Event base de Réglages → Permaliens.
Signature
apply_filters( 'happenboard_event_rewrite_slug', string $base )
Paramètres
-
$basestring - La base enregistrée dans Event base, déjà nettoyée, ou
'events'si le champ est vide.
Valeur de retour
string
La base. Chaque segment séparé par / passe par sanitize_title() ; un résultat vide revient à events.
Exemple
add_filter(
'happenboard_event_rewrite_slug',
function ( $base ) {
// Les événements sont sous /agenda/{event}/.
return 'agenda';
}
);
Remarques
- Un seul argument. Ajoutez-le depuis une extension ou
functions.php: la base est lue à l’enregistrement du type de contenu, surinit. - Renvoyez la même valeur à chaque requête. Les règles de réécriture sont reconstruites au chargement suivant d’une page d’administration, jamais sur le site public : ouvrez une fois un écran d’administration après avoir ajouté le filtre.
- Après un changement, l’ancienne base est mémorisée (les cinq dernières) et ses adresses redirigent (301) vers les nouvelles. Le champ Event base indique alors qu’un filtre fixe la base.
- La règle de la page de toutes les dates suit la base d’elle-même :
happenboard_series_rewrite_prefixn’est pas nécessaire pour cela.
happenboard_rewrite_rules_repaired
Se déclenche après que HappenBoard a reconstruit les règles de réécriture enregistrées, qui avaient perdu celles de ses événements et types de rendez-vous (ces pages répondaient 404). Un autre outil a reconstruit les règles sans HappenBoard chargé : utilisez l’action pour prévenir quelqu’un, car la cause risque de revenir.
Signature
do_action( 'happenboard_rewrite_rules_repaired', array<int,string> $missing )
Paramètres
-
$missingarray<int,string> - Types de contenu sans règle :
hboard_event,hboard_booking_typeou les deux.
Exemple
add_action(
'happenboard_rewrite_rules_repaired',
function ( array $missing ): void {
// Prévenir l'administrateur pour qu'il cherche la cause.
wp_mail(
get_option( 'admin_email' ),
'HappenBoard rebuilt the rewrite rules',
'Rules were missing for: ' . implode( ', ', $missing )
);
}
);
Remarques
- Un seul argument. Les règles sont déjà reconstruites et la réparation est écrite dans le journal d’erreurs PHP.
- La vérification ne tourne qu’au chargement des pages d’administration, au plus une fois par heure, avec des permaliens personnalisés. Tant que personne n’ouvre l’administration, le site public répond 404.
- Un changement de base des événements reconstruit aussi les règles, sans déclencher cette action.
happenboard_series_rewrite_prefix
Définit le premier segment de la règle de réécriture de la page de toutes les dates (/{base}/{event}/all-dates/). Par défaut c’est la base des événements : il ne sert que si les adresses des événements ont été déplacées autrement.
Signature
apply_filters( 'happenboard_series_rewrite_prefix', string $prefix )
Paramètres
-
$prefixstring - La base des événements (
eventssauf changement). Elle est traitée comme un chemin littéral.
Valeur de retour
string
Le préfixe. Il sert seulement à construire le motif par défaut passé à happenboard_series_rewrite_pattern.
Exemple
add_filter(
'happenboard_series_rewrite_prefix',
function ( $prefix ) {
// Une autre extension a déplacé nos événements sous /agenda/.
return 'agenda';
}
);
Remarques
- Un seul argument. Il s’exécute sur
initen priorité 25 : enregistrez-le avant, puis videz les règles de réécriture (enregistrez Réglages → Permaliens). HappenBoard ne les vide de lui-même qu’au changement de base des événements. - HappenBoard pointe vers la page avec le permalien de l’événement suivi de
all-dates/. La règle obtenue doit toujours correspondre à ces liens.
happenboard_series_rewrite_pattern
Remplace l’expression régulière de la règle de la page de toutes les dates. Utile quand les adresses des événements ne sont pas la base suivie du slug.
Signature
apply_filters( 'happenboard_series_rewrite_pattern', string $pattern )
Paramètres
-
$patternstring - Par défaut
'^' . preg_quote( $prefix, '/' ) . '/([^/]+)/all-dates/?$', où$prefixvient dehappenboard_series_rewrite_prefix.
Valeur de retour
string
L’expression passée à add_rewrite_rule(). Le groupe 1 doit capturer le slug de l’événement : la cible est index.php?post_type=hboard_event&name=$matches[1]&happenboard_view=series.
Exemple
add_filter(
'happenboard_series_rewrite_pattern',
function ( $pattern ) {
// Les adresses des événements sont /agenda/{category}/{slug}/.
return '^agenda/[^/]+/([^/]+)/all-dates/?$';
}
);
Remarques
- Un seul argument. Même moment que le filtre du préfixe : enregistrez-le avant
initpriorité 25, puis videz les règles de réécriture. - Gardez le
^initial du motif par défaut. Un groupe capturant avant le slug le décale et la page répond 404. - Votre motif doit correspondre aux liens de HappenBoard vers la page : le permalien de l’événement suivi de
all-dates/.
happenboard_series_url
Renvoie l’adresse de la page de toutes les dates d’un événement, pour les thèmes et extensions qui y renvoient. HappenBoard y répond en priorité 10 mais ne l’utilise pas pour ses propres liens.
Signature
apply_filters( 'happenboard_series_url', string $url, WP_Post|int $post )
Paramètres
-
$urlstring - Valeur renvoyée si
$postn’est pas un événement. Passez''. -
$postWP_Post|int - L’événement, en objet post ou en identifiant.
Valeur de retour
string
L’adresse de la page : le permalien suivi de all-dates/, ou le permalien avec ?happenboard_view=series avec les permaliens simples. $url inchangé si le post n’est pas un événement.
Exemple
// Dans un modèle de thème : lien vers toutes les dates de l'événement courant.
$all_dates = apply_filters( 'happenboard_series_url', '', get_the_ID() );
if ( '' !== $all_dates ) {
printf(
'<a href="%s">%s</a>',
esc_url( $all_dates ),
esc_html__( 'All dates', 'my-theme' )
);
}
Remarques
- Appelez-le avec
''puis le post. Appelé avec le post seul, un post qui n’est pas un événement revient tel quel comme valeur. - Pour changer l’adresse, accrochez-vous avec
10, 2en priorité supérieure à 10, après HappenBoard. Son propre lien See all dates ne passe pas par ce filtre.
happenboard_pro_gcal_event_payload
Filtre l’événement Google Calendar que HappenBoard Pro envoie quand il crée ou met à jour la copie d’un événement. Ajoutez des rappels, des invités ou d’autres champs Google, ou modifiez ce qui a été converti.
Signature
apply_filters( 'happenboard_pro_gcal_event_payload', array<string,mixed> $payload, WP_Post $event )
Paramètres
-
$payloadarray<string,mixed> - Ressource Event de Google avec
summary,description,location,status,extendedProperties,startetend, plusrecurrencepour un événement récurrent. -
$eventWP_Post - Le post de l’événement. Lisez ses métadonnées avec
get_post_meta().
Valeur de retour
array<string,mixed>
La ressource envoyée à Google. Elle est convertie avec (array).
Exemple
add_filter(
'happenboard_pro_gcal_event_payload',
function ( $payload, $event ) {
// Un rappel une heure avant chaque événement.
$payload['reminders'] = array(
'useDefault' => false,
'overrides' => array( array( 'method' => 'popup', 'minutes' => 60 ) ),
);
return $payload;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Gardez
extendedProperties.private.happenboard_origin. La synchronisation entrante s’en sert pour reconnaître les événements de HappenBoard ; sans lui, la synchronisation suivante peut réimporter l’événement en double. - Le même contenu sert à la création et à la mise à jour, et une mise à jour envoie toute la ressource : une clé retirée l’est aussi chez Google. Un champ invalide fait échouer l’envoi. La corbeille et la suppression envoient des requêtes à part, sans ce filtre.
- Ajouter
conferenceDatan’a aucun effet : Pro n’envoie pas le paramètreconferenceDataVersiondont Google a besoin pour créer un lien Meet.
happenboard_pro_outlook_event_payload
Filtre l’événement Microsoft Graph que HappenBoard Pro envoie à Outlook quand il crée ou met à jour la copie d’un événement. Même rôle que happenboard_pro_gcal_event_payload côté Google.
Signature
apply_filters( 'happenboard_pro_outlook_event_payload', array<string,mixed> $payload, WP_Post $event )
Paramètres
-
$payloadarray<string,mixed> - Ressource Event de Graph avec
subject,body,location,isAllDay,isCancelled,showAs,singleValueExtendedProperties,startetend, plusrecurrencequand la règle de répétition peut être convertie. -
$eventWP_Post - Le post de l’événement.
Valeur de retour
array<string,mixed>
La ressource envoyée à Graph. Elle est convertie avec (array).
Exemple
add_filter(
'happenboard_pro_outlook_event_payload',
function ( $payload, $event ) {
$payload['categories'] = array( 'HappenBoard' );
// Placer le titre au-dessus de la description synchronisée.
$payload['body']['content'] = '<p>' . esc_html( get_the_title( $event ) ) . '</p>'
. $payload['body']['content'];
return $payload;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Gardez l’entrée de
singleValueExtendedPropertiesdont l’identifiant se termine parhappenboard_origin, pour la même raison que chez Google : sans elle, l’événement peut être réimporté. body.contentest du HTML qui se termine par un pied « Synced from HappenBoard », coupé à 16 384 caractères. Ajoutez votre texte avant, comme dans l’exemple.- Les événements sur la journée entière suivent les règles de Graph (de minuit à minuit le lendemain, même fuseau aux deux bouts) : réécrivez
startetendavec prudence. La corbeille envoie une mise à jourisCancelledà part et la suppression définitive efface la copie ; aucune ne passe par ce filtre.
Pour aller plus loin
- Hooks participants et inscriptions : réagir aux inscriptions, annulations et changements de date.
- Hooks blocs, balisage et rendu : les autres filtres du balisage Event et le rendu des blocs.
- Hooks synchronisation, webhooks et contrôle d’accès : ce qui se passe après l’envoi d’un événement à Google ou Outlook.