Les callbacks dynamiques sont le mécanisme d’extension recommandé en v6 pour injecter des données custom dans les templates de fiches sans modifier le code des blocs natifs. Ils remplacent les hooks de rendu apidae_template_* de la v5.
Le filtre custom-callback
wp-apidae/blocks-views/dynamic-content/custom-callback
Filtre principal qui permet d’enregistrer de nouveaux slugs de contenu dynamique utilisables dans le bloc Contenu dynamique.
$custom_callback = apply_filters( 'wp-apidae/blocks-views/dynamic-content/custom-callback', array() );
// Retour attendu : array associatif slug => callable
Chaque callable reçoit l’ID de la fiche courante et doit retourner le contenu HTML à afficher.
Enregistrer un callback dynamique
add_filter( 'wp-apidae/blocks-views/dynamic-content/custom-callback', function( $callbacks ) {
$callbacks['ma-distance-depuis-centre'] = function( $post_id ) {
// Calculer la distance depuis le centre-ville
$coords = get_post_meta( $post_id, '_coordinates', true );
$centre = array( 43.7667, 5.8833 ); // Gréoux-les-Bains
$distance = haversine( $coords, $centre );
return sprintf( '%s km du centre', round( $distance, 1 ) );
};
return $callbacks;
} );
Une fois le callback enregistré, le slug ma-distance-depuis-centre est disponible dans le bloc Contenu dynamique des templates.
Utiliser le callback dans un Modèle
Dans l’éditeur d’un Modèle WP-Apidae :
- Insérez un bloc Contenu dynamique depuis la catégorie WP Apidae template.
- Dans le panneau latéral droit, sélectionnez le slug du callback à utiliser.
- Le rendu apparaît en aperçu dans l’éditeur.
Périodes d’ouverture
wp-apidae/dynamic-content-periode-ouverture/date-format
Filtre le format de date des blocs de périodes d’ouverture.
$date_format = apply_filters(
'wp-apidae/dynamic-content-periode-ouverture/date-format',
get_option( 'date_format' )
);
wp-apidae/dynamic_content_element_reference/slug
Filtre un slug d’élément référencé dans le contenu dynamique.
$slug = apply_filters( 'wp-apidae/dynamic_content_element_reference/slug', $slug );
Galerie et médias
wp-apidae/gallery/attached-media-order
Personnalise l’ordre des médias attachés dans le bloc Gallerie d’images.
$attached_media = apply_filters( 'wp-apidae/gallery/attached-media-order', $attached_media, $post_id );
Templates (overrides thème)
wpdae_get_template / wpdae_locate_template
Filtres de localisation des templates PHP, permettant à un thème de surcharger le rendu de certains éléments.
$filter_template = apply_filters( 'wpdae_get_template', $template, $template_name, $args, $template_path, $default_path );
$template = apply_filters( 'wpdae_locate_template', $template, $template_name, $template_path );
Pattern classique : placer le template surchargé dans {votre-theme}/wp-apidae/{template_name}.
Exemple complet : callback pour un label custom
add_filter( 'wp-apidae/blocks-views/dynamic-content/custom-callback', function( $callbacks ) {
$callbacks['label-qualite'] = function( $post_id ) {
$note = (int) get_post_meta( $post_id, '_note_qualite', true );
if ( $note >= 4 ) {
return 'Excellence';
} elseif ( $note >= 3 ) {
return 'Qualité';
}
return '';
};
return $callbacks;
} );