Étendre HappenBoard avec les hooks

Disponible dans :Free

HappenBoard et HappenBoard Pro déclenchent des actions et des filtres WordPress aux endroits que vous aurez le plus souvent envie de modifier. On les trouve dans les formulaires d’inscription, les e-mails, le balisage Event, les créneaux de rendez-vous, les imports et ailleurs. Cette page explique où placer votre code et comment se comportent les hooks. Les pages de référence listées à la fin documentent chaque hook avec ses arguments et un exemple.

Où placer votre code

Placez votre code dans une petite extension à vous : un fichier PHP avec un en-tête Plugin Name dans wp-content/plugins/, ou une extension indispensable (must-use) dans wp-content/mu-plugins/. Le functions.php d’un thème enfant fonctionne aussi, avec une limite expliquée plus bas.

Ne modifiez jamais les fichiers de HappenBoard. La mise à jour suivante les remplace et vos changements sont perdus.

Démarrez votre code sur happenboard_loaded

HappenBoard déclenche happenboard_loaded pendant plugins_loaded, une fois que tous ses services ont branché leurs hooks. Enregistrez vos fonctions depuis cette action :

Code
<?php
/**
 * Plugin Name: My HappenBoard tweaks
 */

add_action(
    'happenboard_loaded',
    function (): void {
        add_filter( 'happenboard_schema_event', 'my_schema_audience', 10, 2 );
    }
);

function my_schema_audience( $schema, $event_id ) {
    // Indique que les événements de la catégorie « Kids » visent les enfants.
    if ( has_term( 'kids', 'happenboard_category', $event_id ) ) {
        $schema['audience'] = array( '@type' => 'Audience', 'audienceType' => 'Children' );
    }

    return $schema;
}

Se brancher ainsi vous apporte trois garanties :

  • Votre code ne s’exécute que si HappenBoard est actif. Si quelqu’un le désactive, l’action ne se déclenche pas et rien ne casse.
  • Les classes et fonctions de HappenBoard sont utilisables dans votre fonction.
  • HappenBoard Pro démarre depuis la même action, en priorité 10. Utilisez happenboard_pro_loaded pour le code qui a besoin de Pro.

Les types de contenu, taxonomies et blocs sont enregistrés plus tard, sur init, comme dans toute extension. Hooks cycle de vie de l’extension détaille l’ordre de chargement et les actions de désinstallation.

Dans un thème enfant, laissez happenboard_loaded de côté. Le functions.php d’un thème est chargé après le déclenchement de cette action : une fonction branchée là ne s’exécute jamais. Ajoutez directement vos filtres, et testez did_action( 'happenboard_loaded' ) si vous devez savoir si HappenBoard est actif.

Comment les hooks sont nommés

  • Chaque nom de hook commence par happenboard_.
  • Les hooks ajoutés par HappenBoard Pro commencent par happenboard_pro_. Les exceptions gardent des noms plus anciens : happenboard_badges_per_sheet, happenboard_event_submitted, happenboard_stripe_checkout_completed, happenboard_stripe_refunded et les six déclencheurs MailerPress qui commencent par happenboard_mp_.
  • Pro déclenche aussi lui-même certains hooks gratuits. Par exemple, happenboard_rsvp_submitted s’exécute aussi quand une commande de billets crée des participants. Chaque entrée indique si l’extension gratuite, Pro ou les deux le déclenchent.
  • Deux filtres d’e-mail ont un nom construit à partir du modèle d’e-mail : happenboard_notifications_{$template_id} et happenboard_notifications_booking_{$template_id}.
  • Un hook est en JavaScript : le filtre happenboard.term.colorPresets de @wordpress/hooks, pour les pastilles de couleur. Il est documenté avec son équivalent PHP, happenboard_term_color_presets.

Filtres, actions et arguments

Un filtre vous transmet une valeur et attend que vous la renvoyiez, modifiée ou non. Renvoyez toujours une valeur du même type : plusieurs hooks convertissent ou écartent une valeur du mauvais type. Une action vous signale qu’un événement a eu lieu et ignore ce que vous renvoyez.

Quand un hook transmet plusieurs arguments, indiquez combien vous en voulez dans le quatrième paramètre de add_filter() ou add_action(). Sans cela, WordPress ne transmet que le premier. Dans l’exemple ci-dessus, 10, 2 demande $schema et $event_id. Le filtre transmet aussi l’objet de la publication en troisième argument, dont cette fonction n’a pas besoin.

Le troisième paramètre est la priorité. Pro se branche sur plusieurs filtres gratuits à la priorité par défaut, 10 : prenez un nombre plus élevé, comme 20, pour modifier une valeur après Pro.

Trouver le hook qu’il vous faut

Chaque page de référence ci-dessous couvre un domaine et commence par un tableau de ses hooks. Chaque entrée donne le type du hook, l’édition qui le déclenche, le fichier où il se trouve, sa signature et ses arguments, un exemple et les pièges connus. Ouvrez ce fichier dans l’extension quand vous avez besoin du code autour du hook.