Ces hooks agissent sur ce que voient les visiteurs et les moteurs de recherche. Ils concernent les listes d’événements, les thèmes classiques, les pages de lieu et d’organisateur, les cartes, la météo, les couleurs de catégorie, le flux iCal et le balisage Event. La plupart s’exécutent à chaque affichage : gardez des callbacks rapides et évitez les requêtes supplémentaires.
Côté éditeur, voyez Construire une page d’événement et le balisage Event automatique. Si les hooks sont nouveaux pour vous, commencez par Étendre HappenBoard avec les hooks.
Ce que HappenBoard ajoute aux pages du thème
Sur un thème de blocs, les modèles de HappenBoard placent ses blocs. Un thème classique ne lit pas ces modèles : HappenBoard ajoute donc lui-même les blocs :
- autour du contenu d’un événement ou de la page d’un type de rendez-vous (
happenboard_classic_theme_blocks) ; - sur l’archive des événements et les archives de catégorie et d’étiquette d’événements (
happenboard_classic_theme_archive_blocks).
Les pages de lieu et d’organisateur reçoivent leur adresse, leurs coordonnées et leurs événements à venir sur les deux types de thème (happenboard_venue_organizer_page). Sous Astra, la ligne d’article du thème (auteur et date) est masquée sur les pages d’événement, de lieu, d’organisateur et de type de rendez-vous (happenboard_hide_theme_entry_meta). Pour les propriétaires de site, voyez Est-ce que cela fonctionnera avec mon thème ?.
Comment le balisage Event est construit
Sur une page d’événement, HappenBoard écrit un JSON-LD Event dans l’en-tête de la page :
happenboard_schema_disabledécide si quelque chose est affiché.happenboard_schema_event_typefixe le@type.happenboard_schema_offersrassemble les offres. HappenBoard Pro en ajoute une par billet en vente.- Sans offre,
happenboard_event_is_ticketedtranche : un événement à billets n’a pas d’offre, tout autre événement reçoit une Offer gratuite dans la devise dehappenboard_schema_fallback_currency, complète quand la capacité des inscriptions est atteinte. happenboard_schema_eventreçoit le tableau terminé.
happenboard_schema_event_type et happenboard_schema_event sont décrits dans Hooks événements, récurrence et séries.
happenboard_query_attributes
Filtre les attributs des quatre blocs de liste d’événements au début de leur rendu, avant toute lecture. $context indique quel bloc s’affiche : un seul callback peut servir les quatre.
Signature
apply_filters( 'happenboard_query_attributes', array<string,mixed> $attributes, string $context )
Paramètres
-
$attributesarray<string,mixed> - Les attributs enregistrés du bloc, tels que modifiés par les callbacks précédents. Une clé absente reprend la valeur par défaut du bloc.
-
$contextstring event-query-loop,events-grid,events-listouupcoming-events.
Valeur de retour
array<string,mixed>
Les attributs que le bloc lit. Une valeur qui n’est pas un tableau devient un tableau vide, et chaque attribut reprend sa valeur par défaut.
Exemple
add_filter(
'happenboard_query_attributes',
function ( $attributes, $context ) {
if ( 'event-query-loop' !== $context ) {
return $attributes;
}
// Les visiteurs non connectés ne voient que la catégorie « Public » (terme 12).
if ( ! is_user_logged_in() ) {
$attributes['categoryIds'] = array( 12 );
}
return $attributes;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour distinguer les blocs. - Les blocs ne lisent pas les mêmes clés.
event-query-looples lit toutes, dontdateRange(upcoming,today,this_week,this_month,next_month,this_year,past,all, oucustomavecdateFrometdateTo),organizerId,layoutetorder.events-listetevents-gridlisentcount,categoryIds,tagIds,venueIdetsearch.upcoming-eventsne lit quecount. - Les valeurs sont bornées après le filtre :
countvaut au plus 50, ou 24 pourevents-grid. Le filtre s’exécute aussi pour les événements à venir listés sur les pages de lieu et d’organisateur (unevent-query-loopavecvenueIdouorganizerId). - HappenBoard Pro s’y branche en priorité 10 pour appliquer les paramètres d’URL de la Filter Bar (
happenboard_categories,happenboard_tags,happenboard_venue,happenboard_organizer,happenboard_q,happenboard_range), sur tous les blocs saufupcoming-events.
happenboard_classic_theme_blocks
Filtre les blocs que HappenBoard ajoute autour du contenu d’un événement, ou de la page d’un type de rendez-vous, sur un thème classique. Le single.php d’un thème classique n’affiche que le titre, l’image et le contenu : HappenBoard ajoute donc les blocs du modèle d’événement via the_content.
Signature
apply_filters( 'happenboard_classic_theme_blocks', array{before:array,after:array} $blocks, WP_Post $post )
Paramètres
-
$blocksarray{before:array,after:array} - Deux listes d’entrées
blockName/attrs, affichées avant et après le contenu. Pour un événement :happenboard/event-date-timeethappenboard/countdownavant ;happenboard/rsvp-form,happenboard/event-series-occurrences(titré « Upcoming dates »),happenboard/event-venue,happenboard/event-organizer,happenboard/add-to-calendarethappenboard/event-categories-tagsaprès. Sur la page « All dates » d’une série : la date et la liste complète des dates avant, rien après, et pas de contenu. Pour un type de rendez-vous :happenboard/booking-pageaprès. -
$postWP_Post - L’événement ou le type de rendez-vous affiché.
Valeur de retour
array{before:array,after:array}
Les deux listes à afficher. Videz-les toutes deux pour retirer les détails, pour un thème qui affiche les siens. Une valeur qui n’est pas un tableau laisse le contenu tel quel.
Exemple
add_filter(
'happenboard_classic_theme_blocks',
function ( $blocks, $post ) {
if ( 'hboard_event' !== $post->post_type ) {
return $blocks;
}
// Ajouter la météo à la fin des détails.
$blocks['after'][] = array(
'blockName' => 'happenboard/event-weather',
'attrs' => array(),
);
return $blocks;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Thèmes classiques uniquement, pour l’événement ou le type de rendez-vous de la requête principale, dans la boucle. Il ne s’exécute pas sur un thème de blocs, quand un modèle de blocs contient déjà des blocs HappenBoard, ni pour les extraits, les flux, les réponses REST et les boucles secondaires.
- Les blocs déjà présents dans le contenu sont retirés des listes avant le filtre : une page mise en forme à la main ne les affiche pas deux fois. Un bloc que vous rajoutez s’affiche quand même.
- Il s’exécute sur
the_contenten priorité 20. Chaque entrée est rendue avecrender_block(), sans blocs internes : utilisez des blocs rendus côté serveur, et comptez avec les filtresrender_block. Sur un événement payant, HappenBoard Pro affiche le Ticket Picker à la place du formulaire RSVP.
happenboard_classic_theme_archive_blocks
Filtre les blocs que HappenBoard affiche sur l’archive des événements et sur les archives de catégorie et d’étiquette d’événements, sur un thème classique. Ces archives affichent alors les blocs des modèles des thèmes de blocs, entre l’en-tête et le pied de page du thème, au lieu de lister les événements comme des articles.
Signature
apply_filters( 'happenboard_classic_theme_archive_blocks', array<int,array{blockName:string,attrs:array<string,mixed>}> $blocks, string $kind )
Paramètres
-
$blocksarray<int,array{blockName:string,attrs:array<string,mixed>}> - Les blocs dans l’ordre d’affichage. L’archive des événements reçoit
happenboard/calendarethappenboard/events-list(10 événements, groupés par mois, avec les lieux). Une archive de catégorie ou d’étiquette reçoithappenboard/events-grid(12 événements, 3 colonnes, avec image, date et lieu). -
$kindstring events,categoryoutag.
Valeur de retour
array<int,array{blockName:string,attrs:array<string,mixed>}>
Les blocs à afficher. Renvoyez un tableau vide pour garder le modèle d’archive du thème ; une valeur qui n’est pas un tableau compte comme vide.
Exemple
add_filter(
'happenboard_classic_theme_archive_blocks',
function ( $blocks, $kind ) {
if ( 'events' !== $kind ) {
return $blocks;
}
// Garder la liste à venir, retirer le calendrier mensuel au-dessus.
return array_values(
array_filter(
$blocks,
fn ( $block ) => 'happenboard/calendar' !== $block['blockName']
)
);
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour recevoir$kind. - Thèmes classiques uniquement. HappenBoard ne remplace que les modèles génériques du thème (
archive.php,taxonomy.php,index.php). Unarchive-hboard_event.phpou untaxonomy-happenboard_category.phppropre au thème est conservé, tout comme un modèle de blocs attribué dans l’Éditeur de site. - Il s’exécute au moins deux fois par requête : sur
template_include, pour décider du changement de modèle, puis à la construction de la page. Évitez tout effet de bord dans le callback. - Le titre de la page et le conteneur
mainne font pas partie de la liste. Sur une archive de catégorie ou d’étiquette,happenboard/events-gridse limite au terme affiché, et suit la pagination de l’archive, quand sescategoryIdsettagIdssont vides.
happenboard_hide_theme_entry_meta
Filtre si la ligne d’article du thème Astra (auteur, date, commentaires) est masquée sur les pages HappenBoard : événements, lieux, organisateurs et types de rendez-vous. Renvoyez false pour l’afficher.
Signature
apply_filters( 'happenboard_hide_theme_entry_meta', bool $hide )
Paramètres
-
$hidebool - Par défaut
true.
Valeur de retour
bool
true pour masquer la ligne d’Astra, false pour la garder.
Exemple
add_filter(
'happenboard_hide_theme_entry_meta',
function ( $hide ) {
// Garder la ligne d'Astra sur les pages d'organisateur uniquement.
if ( is_singular( 'hboard_organizer' ) ) {
return false;
}
return $hide;
}
);
Remarques
- Un argument, sans l’article : testez la page avec
is_singular(). Les types de contenu sonthboard_event,hboard_venue,hboard_organizerethboard_booking_type. - Il ne s’exécute que sous Astra, depuis le filtre
astra_single_post_metad’Astra, et seulement sur ces pages, page « All dates » d’une série comprise. - Les autres thèmes ne sont pas concernés : GeneratePress limite déjà ses métadonnées aux articles, et les thèmes de blocs utilisent les modèles de HappenBoard.
happenboard_venue_organizer_page
Filtre ce que HappenBoard ajoute après le contenu de la page d’un lieu ou d’un organisateur : la description, les coordonnées, une carte intégrée et les événements à venir. Il s’exécute sur les thèmes de blocs comme sur les thèmes classiques.
Signature
apply_filters( 'happenboard_venue_organizer_page', array{description:bool,details:bool,map:bool,upcoming:int} $parts, WP_Post $post )
Paramètres
-
$partsarray{description:bool,details:bool,map:bool,upcoming:int} description: la description du lieu ou la présentation de l’organisateur, affichée quand l’article n’a pas de contenu propre (par défauttrue).details: l’adresse d’un lieu avec un lien vers le service de cartes, le téléphone, le site web et l’e-mail d’un organisateur (par défauttrue).map: la carte intégrée d’un lieu sous son adresse (par défautfalse).upcoming: le nombre d’événements à venir listés (10 par défaut, 50 au plus, 0 pour aucun).-
$postWP_Post - Le lieu (
hboard_venue) ou l’organisateur (hboard_organizer) affiché.
Valeur de retour
array|false
Les parties à afficher ; une clé absente garde sa valeur par défaut. Renvoyez false pour ne rien ajouter, pour un thème qui affiche ses propres détails.
Exemple
add_filter(
'happenboard_venue_organizer_page',
function ( $parts, $post ) {
if ( 'hboard_venue' === $post->post_type ) {
// Les pages de lieu affichent leur carte et les 5 prochains événements.
$parts['map'] = true;
$parts['upcoming'] = 5;
}
return $parts;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour recevoir l’article. - La carte est désactivée par défaut car elle se charge depuis un service tiers : OpenStreetMap, ou Google Maps quand c’est le fournisseur de cartes et qu’une clé d’API est réglée. Activée, elle passe par
happenboard_venue_map_iframe_srcethappenboard_venue_map_html, et le Map Design Studio de HappenBoard Pro lui applique son style. - Il s’exécute sur
the_contenten priorité 20, pour le lieu ou l’organisateur de la requête principale uniquement. Il ne s’exécute pas quand le modèle de blocs de la page contient déjà des blocs HappenBoard, ni pour un article protégé par mot de passe. - La liste à venir est un bloc Event Query Loop :
happenboard_query_attributess’exécute donc aussi pour elle, avec le contexteevent-query-loop.
happenboard_venue_map_iframe_src
Filtre l’URL chargée dans l’iframe de la carte du lieu, sans toucher au reste du code HTML. La hauteur, le chargement différé, le titre et la politique de référent de la sortie par défaut sont conservés.
Signature
apply_filters( 'happenboard_venue_map_iframe_src', string $src, string $provider, array $context )
Paramètres
-
$srcstring - L’URL construite pour le fournisseur : l’intégration OpenStreetMap, l’URL de Google Maps Embed API, ou le modèle d’URL d’iframe personnalisé avec
{lat},{lng}et{zoom}remplacés. -
$providerstring osm,googleoucustom.-
$contextarray lat(float),lng(float),zoom(int) etname(string).
Valeur de retour
string
L’URL de l’iframe. Elle passe ensuite par esc_url() : une URL data: ou javascript: finit vide.
Exemple
add_filter(
'happenboard_venue_map_iframe_src',
function ( $src, $provider, $context ) {
// Votre propre serveur de cartes.
return add_query_arg(
array(
'lat' => $context['lat'],
'lng' => $context['lng'],
'zoom' => $context['zoom'],
),
'https://maps.example.com/embed'
);
},
10,
3
);
Remarques
- Trois arguments : enregistrez avec
10, 3. - Il s’exécute pour la carte du bloc Event Venue et pour celle d’une page de lieu, avant
happenboard_venue_map_html. Quand le Map Design Studio de HappenBoard Pro remplace tout le code HTML sur ce second filtre, l’URL renvoyée ici n’est pas utilisée. - Le fournisseur repasse à
osmquandgooglen’a pas de clé d’API oucustompas de modèle d’URL : un callback qui ne traite quecustompeut donc ne jamais agir.
happenboard_venue_map_html
Filtre tout le code HTML de la carte d’un lieu : celle du bloc Event Venue et celle d’une page de lieu. La chaîne renvoyée est affichée telle quelle, sans échappement ensuite : l’échappement est à votre charge.
Signature
apply_filters( 'happenboard_venue_map_html', string $html, string $provider, array $context )
Paramètres
-
$htmlstring - Le code par défaut : un élément
ddcontenant une iframe à chargement différé, déjà échappé. -
$providerstring osm,googleoucustom.-
$contextarray lat,lng,zoom,height,nameetsettings(les réglages généraux, clés secrètes masquées).
Valeur de retour
string
Le code HTML à afficher.
Exemple
add_filter(
'happenboard_venue_map_html',
function ( $html, $provider, $context ) {
// Un conteneur que votre propre script de carte remplit.
return sprintf(
'<dd class="my-map" data-lat="%s" data-lng="%s" data-zoom="%d" style="height:%dpx"></dd>',
esc_attr( (string) $context['lat'] ),
esc_attr( (string) $context['lng'] ),
(int) $context['zoom'],
(int) $context['height']
);
},
20,
3
);
Remarques
- Trois arguments : enregistrez avec
10, 3ou plus tard. - Dans
$context['settings'], les clés Google Maps, météo, Turnstile et Akismet sont masquées ; un booléen<clé>_setindique si chacune est réglée. - Il ne s’exécute que s’il y a une carte à afficher. Pour le bloc : « Show map » est activé, l’événement n’est pas virtuel et le lieu a des coordonnées. Pour une page de lieu : sa partie
mapest activée. - HappenBoard Pro s’y branche en priorité 10. Quand un modèle du Map Design Studio est choisi, il renvoie un conteneur MapLibre à la place de l’iframe. Un callback plus tardif reçoit ce conteneur, mais
$providernomme toujours le fournisseur de HappenBoard.
happenboard_pro_map_style
Filtre le style MapLibre d’une carte HappenBoard Pro : le bloc Events Clustered Map, et les cartes de lieu stylées par le Map Design Studio. Renvoyez n’importe quel style MapLibre (version 8), par exemple un style vectoriel d’un fournisseur de tuiles.
Signature
apply_filters( 'happenboard_pro_map_style', array<string,mixed> $style, string $context, string $template )
Paramètres
-
$stylearray<string,mixed> - Le style MapLibre : le préréglage choisi, le JSON personnalisé collé ou, pour la Clustered Map sans modèle, le style OpenStreetMap par défaut.
-
$contextstring clustered-mapouvenue-map.-
$templatestring - Le modèle du Map Design Studio :
off,customou un préréglage (light,dark,sepia,minimal,brand,satellite).
Valeur de retour
array<string,mixed>
Le style à utiliser. Une valeur qui n’est pas un tableau avec une clé version est ignorée, et le style d’origine est gardé.
Exemple
add_filter(
'happenboard_pro_map_style',
function ( $style, $context, $template ) {
if ( 'clustered-map' !== $context ) {
return $style;
}
// Un style vectoriel fourni avec le thème.
$json = file_get_contents( get_stylesheet_directory() . '/map-style.json' );
$custom = json_decode( (string) $json, true );
return is_array( $custom ) ? $custom : $style;
},
10,
3
);
Remarques
- Trois arguments : enregistrez avec
10, 3. - Sur les cartes de lieu, il ne s’exécute que si un modèle du Map Design Studio est choisi. Avec
off, les cartes de lieu restent l’iframe de HappenBoard et ce filtre ne s’exécute pas pour elles. La Clustered Map utilise toujours MapLibre : il s’y exécute donc toujours. - Le style est écrit dans la page, en JSON dans un attribut
data-style, à chaque affichage de carte : gardez un callback rapide, et considérez tout son contenu comme public. - Pour ne changer que les tuiles raster,
happenboard_pro_map_tile_sourceest plus simple.
happenboard_pro_map_tile_source
Filtre les tuiles raster des cartes de HappenBoard Pro : le style par défaut de la Clustered Map et chaque préréglage du Map Design Studio sauf Satellite. Utile pour quitter les serveurs de tuiles d’OpenStreetMap, qui demandent aux sites très fréquentés de passer par un autre fournisseur.
Signature
apply_filters( 'happenboard_pro_map_tile_source', array{tiles:array<int,string>,tileSize:int,attribution:string} $source )
Paramètres
-
$sourcearray{tiles:array<int,string>,tileSize:int,attribution:string} tiles: modèles d’URL XYZ avec{z},{x}et{y}(par défauthttps://tile.openstreetmap.org/{z}/{x}/{y}.png).tileSize: 256 par défaut.attribution: la mention OpenStreetMap, en HTML.
Valeur de retour
array
La source de tuiles. Seules les URL HTTPS sont gardées ; s’il n’en reste aucune, la source OpenStreetMap est utilisée. tileSize doit valoir 256 ou 512 (sinon 256), et attribution ne garde que les liens.
Exemple
add_filter(
'happenboard_pro_map_tile_source',
function ( $source ) {
// Des tuiles de votre propre fournisseur.
return array(
'tiles' => array( 'https://tiles.example.com/{z}/{x}/{y}.png?key=PUBLIC_KEY' ),
'tileSize' => 256,
'attribution' => '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
);
}
);
Remarques
- Un argument.
- Il ne change ni le préréglage Satellite (images Esri) ni un style personnalisé collé en JSON. Pour remplacer un style entier, utilisez
happenboard_pro_map_style. - Les URL de tuiles sont chargées par le navigateur de vos visiteurs et figurent dans la page : toute clé qu’elles contiennent est publique. Utilisez une clé limitée à votre domaine.
- Il ne concerne que les cartes MapLibre de Pro. La carte en iframe de HappenBoard (Map Design Studio sur off) utilise le fournisseur de cartes des réglages ; changez son URL avec
happenboard_venue_map_iframe_src.
happenboard_weather_data
Filtre les données météo que reçoit le bloc Event Weather, après le cache et l’éventuelle requête à Open-Meteo. Ajoutez des champs ou corrigez des valeurs sans nouvelle requête.
Signature
apply_filters( 'happenboard_weather_data', array<string,mixed> $result, array{lat:float,lng:float,date:string,regime:string} $ctx )
Paramètres
-
$resultarray<string,mixed> - Les données du jour, avec
regime(historical,forecastouclimatology),dateetunit_labels. Le bloc litweather_code,is_day,temp,temp_max,temp_min,precip_probability,wind_max,regimeetunit_labels. -
$ctxarray{lat:float,lng:float,date:string,regime:string} - La demande :
lat,lng,date(Y-m-ddans le fuseau du site) etregime.
Valeur de retour
array<string,mixed>
Les données que le bloc affiche. Gardez toutes les clés que le bloc lit.
Exemple
add_filter(
'happenboard_weather_data',
function ( $result, $ctx ) {
// Moyennes saisonnières : masquer la maximale du jour.
if ( 'climatology' === $ctx['regime'] ) {
$result['temp_max'] = null;
}
return $result;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - Rien ne se déclenche tant que la météo n’est pas activée (« Enable weather » sur la carte Weather de l’écran Integrations). Il ne s’exécute pas non plus pour des coordonnées hors limites, une date mal formée ou une requête qui a échoué.
- Il s’exécute après le cache : vos modifications sont appliquées à chaque affichage et jamais enregistrées.
regimefixe la classe CSS du bloc (is-regime-*) et son libellé. Le supprimer ou le renommer casse l’affichage.
happenboard_term_color_presets
Filtre les pastilles proposées par les sélecteurs de couleur de HappenBoard : la couleur des catégories d’événements, dans l’administration et dans l’éditeur de blocs, et la couleur d’accent des types de rendez-vous.
Signature
apply_filters( 'happenboard_term_color_presets', array<int,array{name:string,color:string}> $presets )
Paramètres
-
$presetsarray<int,array{name:string,color:string}> - Dix pastilles par défaut, chacune avec
name(libellé traduit) etcolor(#rrggbben minuscules).
Valeur de retour
array<int,array{name:string,color:string}>
Les pastilles. Chaque entrée est vérifiée ensuite, et une entrée mal formée est retirée.
Exemple
add_filter(
'happenboard_term_color_presets',
function ( $presets ) {
// Ajouter la couleur de votre marque aux sélecteurs.
$presets[] = array(
'name' => 'Brand',
'color' => '#1a7f5a',
);
return $presets;
}
);
Remarques
- Un argument.
- Seules les couleurs hexadécimales à six chiffres restent (
#1a7f5a) : hexadécimal court,rgb(),hsl(), noms de couleur et hexadécimal avec transparence sont retirés.nameest facultatif et reprend la valeur hexadécimale. - Il ne change que les sélecteurs, pas les couleurs déjà enregistrées, et n’a aucun effet sur le site public. Les étiquettes d’événements n’ont pas de sélecteur de couleur.
- Un filtre JavaScript,
happenboard.term.colorPresets(@wordpress/hooks), passe après lui. Un tableau vide ici reprend les valeurs par défaut du JavaScript : pour n’afficher aucune pastille, renvoyez un tableau vide depuis le filtre JavaScript.
happenboard_ical_feed_cache_ttl
Définit combien de temps le flux iCal du site (GET /happenboard/v1/ical/feed.ics) reste en cache, en secondes. La copie en cache est servie à chaque agenda abonné jusqu’à ce qu’un événement change ou que ce délai expire.
Signature
apply_filters( 'happenboard_ical_feed_cache_ttl', int $ttl )
Paramètres
-
$ttlint - Par défaut
3600(une heure).
Valeur de retour
int
La durée en secondes. Renvoyez 0 ou moins pour désactiver le cache et construire le flux à chaque requête.
Exemple
add_filter(
'happenboard_ical_feed_cache_ttl',
function ( $ttl ) {
// Une extension modifie les titres à la volée : garder les copies dix minutes au plus.
return 10 * MINUTE_IN_SECONDS;
}
);
Remarques
- Un argument. Il est lu à chaque requête du flux : renvoyez toujours la même valeur.
- Un délai plus court est rarement utile. Une modification d’événement, de lieu, de catégorie ou des dates d’un événement vide le cache, tout comme un changement de permaliens. La durée ne couvre que ce qu’aucun hook ne signale, comme une extension qui filtre les titres ou les liens.
- Cache désactivé, le flux envoie toujours un
ETag, répond 304 à unIf-None-Matchcorrespondant et envoieCache-Control: public, max-age=300. - Seul le flux du site est mis en cache. Le téléchargement d’un événement (
GET /happenboard/v1/events/{id}/ical) est construit à chaque requête et ignore ce filtre.
happenboard_schema_disable
Désactive le JSON-LD Event de HappenBoard pour un événement, par exemple quand une extension SEO affiche le sien. Il s’exécute avant toute construction du balisage : renvoyer true ne coûte rien.
Signature
apply_filters( 'happenboard_schema_disable', bool $disabled, int $post_id )
Paramètres
-
$disabledbool - Par défaut
false. -
$post_idint - L’événement affiché.
Valeur de retour
bool
true pour ne rien afficher. La valeur est convertie en booléen : la chaîne 'false' désactive donc le balisage.
Exemple
add_filter(
'happenboard_schema_disable',
function ( $disabled, $post_id ) {
// Les événements cochés « sans balisage » dans votre propre boîte méta.
return $disabled || (bool) get_post_meta( $post_id, '_my_no_event_schema', true );
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2pour recevoir l’événement, sinon vous ne pouvez désactiver que le site entier. - Il s’exécute sur
wp_headen priorité 30, sur les pages d’événement uniquement. La route publiqueGET /happenboard/v1/events/{id}/schemarenvoie toujours le balisage. - Renvoyer
truesaute la suite :happenboard_schema_event_type,happenboard_schema_offers,happenboard_event_is_ticketed,happenboard_schema_fallback_currencyethappenboard_schema_eventne s’exécutent pas. - Inutile pour SEOPress : quand l’événement a un balisage Event réglé dans SEOPress, HappenBoard s’efface déjà.
happenboard_schema_offers
Filtre les offers du JSON-LD Event, une liste d’entrées schema.org Offer. HappenBoard transmet une liste vide ; HappenBoard Pro ajoute une Offer par billet en vente.
Signature
apply_filters( 'happenboard_schema_offers', array<int,array<string,mixed>> $offers, int $event_id, string $url, Occurrence|null $occurrence )
Paramètres
-
$offersarray<int,array<string,mixed>> - Vide dans HappenBoard. Avec Pro, une Offer par billet en vente.
-
$event_idint - L’identifiant de l’événement.
-
$urlstring - Le permalien de l’événement, à utiliser comme
urlde chaque Offer. -
$occurrenceHappenBoard\Service\Recurrence\Occurrence|null - La date que décrit le JSON-LD (celle en cours, sinon la prochaine, sinon la dernière), avec
start_utc,end_utcetsequence. Sur un événement récurrent, comptez les places de cette date.nullpour un événement sans dates.
Valeur de retour
array<int,array<string,mixed>>
Une liste de tableaux Offer. Les entrées qui ne sont pas des tableaux sont retirées, et une valeur qui n’est pas un tableau compte comme vide.
Exemple
add_filter(
'happenboard_schema_offers',
function ( $offers, $event_id, $url, $occurrence ) {
// Des billets vendus ailleurs, avec le prix enregistré sur l'événement.
$price = (string) get_post_meta( $event_id, '_my_ticket_price', true );
if ( '' !== $price ) {
$offers[] = array(
'@type' => 'Offer',
'url' => $url,
'price' => $price,
'priceCurrency' => 'EUR',
'availability' => 'https://schema.org/InStock',
);
}
return $offers;
},
10,
4
);
Remarques
- Quatre arguments : enregistrez avec
10, 4pour recevoir la date. - HappenBoard Pro s’y branche en priorité 10. Il ajoute une Offer par billet dont la vente est ouverte, dans la devise du billet, avec
validFrometvalidThroughtirés des dates de vente. Elle passe àSoldOutquand il ne reste aucune place à la date décrite. Complétez$offersau lieu de le remplacer. isAccessibleForFreesuit ce que vous renvoyez :falsedès qu’une Offer a unpricesupérieur à 0. Les entrées ne sont pas vérifiées : donnez à chacune unpricenumérique, unpriceCurrencyet uneavailability.- Une liste vide ne veut pas toujours dire gratuit : voir
happenboard_event_is_ticketed. Pour un Event sansoffers, retirez la clé surhappenboard_schema_event.
happenboard_event_is_ticketed
Filtre si un événement est vendu par billets. Il décide de ce que dit le JSON-LD Event quand happenboard_schema_offers ne renvoie aucune Offer : un événement à billets n’a ni Offer ni isAccessibleForFree, tout autre événement reçoit une Offer gratuite.
Signature
apply_filters( 'happenboard_event_is_ticketed', bool $ticketed, int $event_id )
Paramètres
-
$ticketedbool - Par défaut
false. -
$event_idint - L’identifiant de l’événement.
Valeur de retour
bool
true quand l’entrée de l’événement se vend par billets, qu’une vente soit ouverte ou non.
Exemple
add_filter(
'happenboard_event_is_ticketed',
function ( $ticketed, $event_id ) {
// Événements vendus sur une billetterie externe.
if ( '' !== (string) get_post_meta( $event_id, '_my_ticket_url', true ) ) {
return true;
}
return $ticketed;
},
10,
2
);
Remarques
- Deux arguments : enregistrez avec
10, 2. - HappenBoard Pro répond
trueen priorité 10 pour un événement qui a au moins un billet, payant ou gratuit, en vente ou non. Une vente fermée retire alors les offres au lieu de faire passer l’événement pour gratuit. Gardez untruereçu. - Il ne s’exécute que si aucune Offer n’est revenue. L’Offer gratuite qui en découle a un prix de
0, dans la devise dehappenboard_schema_fallback_currency, et passe àSoldOutquand la capacité des inscriptions est atteinte. - Il s’exécute dans le constructeur du balisage, que la route publique
GET /happenboard/v1/events/{id}/schemaappelle aussi : ne vous fiez pas aux conditions de page commeis_singular().
happenboard_schema_fallback_currency
Filtre la devise de l’Offer gratuite qu’un événement reçoit quand il n’a aucune Offer et n’est pas vendu par billets. Sans effet sur les vraies offres.
Signature
apply_filters( 'happenboard_schema_fallback_currency', string $currency )
Paramètres
-
$currencystring - La devise du site : Currency dans HappenBoard → Settings → General, après le filtre
happenboard_currency.
Valeur de retour
string
Un code ISO 4217 à trois lettres. Il est mis en majuscules, pas vérifié.
Exemple
add_filter(
'happenboard_schema_fallback_currency',
function ( $currency ) {
// Événements gratuits indiqués en francs suisses.
return 'CHF';
}
);
Remarques
- Un argument. La plupart des sites n’ont besoin d’aucun callback : la valeur par défaut suit déjà la devise du site.
- Il ne s’exécute que si
happenboard_schema_offersn’a renvoyé aucune Offer et sihappenboard_event_is_ticketeda renvoyéfalse. L’Offer gratuite a un prix de0: la devise ne fait pas passer l’événement pour payant. - Un code invalide est affiché tel quel, et les moteurs de recherche rejettent l’Offer.
- Il s’exécute dans le constructeur du balisage, que la route publique
GET /happenboard/v1/events/{id}/schemaappelle aussi : ne vous fiez pas aux conditions de page commeis_singular().
Pour aller plus loin
- Carte groupée et Map Design Studio : les cartes Pro que modifient les deux filtres de style.
- Lieux : créer et renseigner les coordonnées : les coordonnées dont ont besoin les cartes de lieu et la météo.
- Hooks billetterie et paiements : les billets derrière les offres de Pro.