Ces hooks agissent sur l’administration de HappenBoard et sur qui peut s’en servir. Ils couvrent les écrans de son menu, les données de démarrage de son application, les permissions de chaque rôle et la limite par visiteur des consultations publiques de rendez-vous. Utilisez-les pour ajouter un écran à votre module, créer un rôle sur mesure ou régler une page de réservation très fréquentée. Le guide Rôles et permissions explique chaque permission en termes simples, et Étendre HappenBoard avec les hooks présente les bases de la référence.
Comment les permissions sont accordées
HappenBoard vérifie ses propres permissions, comme happenboard_manage_events ou happenboard_view_attendees, plutôt que les rôles WordPress. L’extension gratuite et HappenBoard Pro ajoutent chacune les leurs aux rôles Administrateur et Éditeur lors de leur installation. Deux points comptent quand vous les modifiez dans le code :
- Les filtres de rôles ci-dessous ne s’exécutent qu’à l’installation des permissions : à l’activation, ou une fois après une mise à jour qui en ajoute. Ils changent ce qui est écrit à ce moment, pas ce que les rôles ont aujourd’hui.
- Les routes REST et le menu d’administration de HappenBoard laissent aussi passer tout utilisateur qui a
manage_options. Retirer une permission HappenBoard aux administrateurs ne les bloque donc pas.
Rôles et permissions Pro liste les six permissions qu’ajoute HappenBoard Pro.
happenboard_screen_context
Filtre les données de démarrage de l’application d’administration HappenBoard, écrites dans la page sous le nom window.happenBoardVars. Ajoutez vos propres clés, ou modifiez celles d’origine.
Signature
apply_filters( 'happenboard_screen_context', array $context )
Paramètres
-
$contextarray<string,mixed> - Les données :
pluginVersion,nonce(un noncewp_rest),restBase,wpRestBase,siteUrl,siteName,adminEmail,adminUrl,pluginUrl,nav,currentUser,locale,timezone,dateFormat,timeFormat,startOfWeek,integrations,onboarded,general,colorPresetsetlanguages.
Valeur de retour
array<string,mixed>
Les données, transmises à wp_localize_script().
Exemple
add_filter(
'happenboard_screen_context',
function ( $context ) {
// Vos réglages, imbriqués pour que les booléens restent booléens en JS.
$context['myAddon'] = array(
'enabled' => true,
'endpoint' => rest_url( 'my-addon/v1/' ),
);
return $context;
},
20
);
Remarques
- Il ne s’exécute que sur les écrans d’administration HappenBoard, dont l’identifiant d’écran contient
happenboard. L’éditeur de blocs reçoit un autre objet, non filtré, qui porte le même nomhappenBoardVars. - Ajoutez au tableau, ne le remplacez pas. HappenBoard Pro ajoute une clé
proen priorité 10 : sans elle, l’application masque des fonctions Pro comme l’import de participants. L’extension gratuite ne définit paspro: lisez-la avec$context['pro'] ?? null. wp_localize_script()convertit en chaînes les valeurs scalaires de premier niveau :truearrive en JavaScript sous la forme"1". Imbriquez vos valeurs dans un tableau pour garder de vrais booléens et nombres.- Tout utilisateur qui peut ouvrir un écran HappenBoard reçoit ces données dans le code source de la page. N’y mettez jamais de secret, comme une clé d’API ou de licence.
happenboard_capabilities_role_defaults
Filtre les permissions HappenBoard que reçoit chaque rôle WordPress. Il ne s’exécute que lorsque HappenBoard installe ses permissions, pas à chaque requête.
Signature
apply_filters( 'happenboard_capabilities_role_defaults', array $mapping )
Paramètres
-
$mappingarray<string,array<int,string>> - Le slug du rôle associé à sa liste de permissions.
administratoren reçoit onze, toutes saufhappenboard_host.editoren reçoit huit : les mêmes sanshappenboard_export_attendees,happenboard_manage_settingsnihappenboard_manage_integrations.happenboard_hostse donne à des utilisateurs, jamais à un rôle.
Valeur de retour
array<string,array<int,string>>
La correspondance. Chaque permission est ajoutée avec WP_Role::add_cap(), et les rôles inexistants sont ignorés.
Exemple
// Dans une extension MU ou le fichier principal de votre extension, avant init.
add_filter(
'happenboard_capabilities_role_defaults',
function ( $mapping ) {
// Les gérants de boutique WooCommerce voient participants et rendez-vous.
$mapping['shop_manager'] = array(
'happenboard_view_attendees',
'happenboard_view_bookings',
);
return $mapping;
}
);
// Puis désactivez et réactivez HappenBoard une fois pour l'appliquer.
Remarques
- Il s’exécute à l’activation de HappenBoard et quand un site est ajouté à un réseau où l’extension est activée pour tout le réseau. Il s’exécute aussi une fois après une mise à jour qui ajoute des permissions : ce contrôle lit l’option
happenboard_caps_versionsuriniten priorité 1. - Modifier la correspondance plus tard n’accorde rien à lui seul : désactivez puis réactivez HappenBoard pour l’appliquer. Branchez votre fonction avant
initpriorité 1, par exemple dans le fichier principal de votre extension. - Il ne fait qu’ajouter. Retirer une permission de la correspondance ne l’enlève pas au rôle qui l’a déjà : appelez vous-même
WP_Role::remove_cap(). - La désinstallation de HappenBoard retire ses douze permissions de chaque rôle et de chaque utilisateur, mais pas les autres permissions ajoutées avec ce filtre.
happenboard_pro_capabilities_role_defaults
Filtre les rôles WordPress qui reçoivent les six permissions de HappenBoard Pro. Il ne s’exécute que lorsque Pro installe ses permissions.
Signature
apply_filters( 'happenboard_pro_capabilities_role_defaults', array $mapping )
Paramètres
-
$mappingarray<string,array<int,string>> administratorles reçoit toutes les six :happenboard_manage_tickets,happenboard_view_orders,happenboard_export_orders,happenboard_refund_orders,happenboard_run_checkinethappenboard_manage_resources.editoren reçoit quatre, sans export ni remboursement.
Valeur de retour
array<string,array<int,string>>
La correspondance, écrite avec WP_Role::add_cap(). Les rôles inexistants sont ignorés.
Exemple
add_filter(
'happenboard_pro_capabilities_role_defaults',
function ( $mapping ) {
// Les gérants de boutique WooCommerce gèrent commandes et remboursements.
$mapping['shop_manager'] = array(
'happenboard_view_orders',
'happenboard_export_orders',
'happenboard_refund_orders',
);
return $mapping;
}
);
// Puis désactivez et réactivez HappenBoard Pro une fois pour l'appliquer.
Remarques
- Il s’exécute aux mêmes moments que le filtre gratuit. Ce sont l’activation de Pro, l’ajout d’un site à un réseau où Pro est activé pour tout le réseau, et une mise à jour qui ajoute des permissions. Cette dernière est repérée par l’option
happenboard_pro_caps_versionsuriniten priorité 1. - Il ne fait qu’ajouter, et une modification ne s’applique qu’après avoir désactivé puis réactivé Pro.
happenboard_manage_integrationsappartient à l’extension gratuite, même si les écrans d’intégration de Pro s’en servent. Accordez-la avechappenboard_capabilities_role_defaults.- Désinstaller Pro avec
HAPPENBOARD_PRO_UNINSTALLdéfinie retire ses six permissions de chaque rôle et utilisateur, pas les autres permissions ajoutées ici.
happenboard_me_capabilities
Filtre la carte des permissions renvoyée par GET /happenboard/v1/me/capabilities. L’application d’administration et les front ends découplés la lisent pour choisir les boutons à afficher.
Signature
apply_filters( 'happenboard_me_capabilities', array $caps, WP_User $user )
Paramètres
-
$capsarray<string,bool> - Huit permissions gratuites, chacune réglée sur le contrôle de ses routes REST, repli compris. Ce sont : gérer événements, lieux et organisateurs, voir, gérer et exporter les participants, gérer les réglages et les intégrations. Lieux et organisateurs se replient sur
edit_posts, les autres surmanage_options. Les permissions de rendez-vous ethappenboard_hostn’y figurent pas. -
$userWP_User - L’utilisateur courant. Toujours connecté : la route refuse les requêtes anonymes.
Valeur de retour
array<string,bool>
La carte, envoyée dans la clé capabilities de la réponse.
Exemple
add_filter(
'happenboard_me_capabilities',
function ( $caps, $user ) {
// Un front end sur mesure a aussi besoin des permissions de rendez-vous.
$extra = array( 'happenboard_view_bookings', 'happenboard_manage_booking_types', 'happenboard_host' );
foreach ( $extra as $cap ) {
$caps[ $cap ] = user_can( $user, $cap );
}
return $caps;
},
10,
2
);
Remarques
- Deux arguments :
add_filter( ..., 10, 2 ). - Il ne fait qu’informer. Passer une valeur à
trueaffiche un bouton, mais la route REST derrière vérifie toujours la vraie permission et refuse la requête. - HappenBoard Pro ajoute ses six permissions en priorité 10, avec le même repli sur
manage_optionsque ses routes. Ajoutez au tableau : en renvoyer un nouveau supprime les entrées gratuites et Pro. - Tout utilisateur connecté, abonné compris, peut appeler cette route. Gardez des valeurs booléennes et n’ajoutez rien que vous ne montreriez pas à chaque compte.
happenboard_throttle_public_reads
Filtre si HappenBoard compte les consultations publiques de rendez-vous par adresse de visiteur, et en refuse plus de 60 par minute. Ces consultations sont la liste des créneaux libres et le devis d’un type de rendez-vous.
Signature
apply_filters( 'happenboard_throttle_public_reads', bool $counts )
Paramètres
-
$countsbool truequand le site utilise un cache d’objets persistant comme Redis ou Memcached (wp_using_ext_object_cache()), sinonfalse.
Valeur de retour
bool
true pour compter et limiter les consultations, false pour toutes les laisser passer.
Exemple
add_filter(
'happenboard_throttle_public_reads',
function ( $counts ) {
// Pas de Redis ni de Memcached ici, mais un robot aspire la page de
// réservation : comptez quand même les consultations.
return true;
}
);
Remarques
- Trois routes sont comptées.
GET /happenboard/v1/booking-types/{id}/slotset la liste de reportGET /happenboard/v1/bookings/{token}/slotspartagent un compteur,GET /happenboard/v1/booking-types/{id}/quotea le sien. Au-delà de 60 dans une même minute, l’adresse reçoit une réponse HTTP 429. - Sans cache d’objets persistant, chaque compteur est un transient : deux lignes dans la table des options par adresse et par minute, laissées au nettoyage quotidien de WordPress. C’est pourquoi le comptage y est désactivé par défaut.
- L’adresse est
REMOTE_ADDR, passée par le filtrehappenboard_booking_client_ip. Derrière un proxy ou un CDN, filtrez-la vers la vraie adresse du visiteur, sinon tous les visiteurs partagent un compteur. - Il ne concerne ni l’envoi des inscriptions et des réservations, qui gardent leurs propres limites, ni la recherche de rendez-vous de HappenBoard Pro.
Pour aller plus loin
- Rôles et permissions : ce que permet chaque permission gratuite.
- Rôles et permissions Pro : les permissions des billets, commandes, check-in et ressources.
- happenboard_booking_client_ip : donner à la limite des consultations la vraie adresse du visiteur derrière un proxy.