1. Accueil
  2. Docs
  3. Doc technique
  4. Doc technique (v6)
  5. Callbacks dynamiques (v6)

Callbacks dynamiques (v6)

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 :

  1. Insérez un bloc Contenu dynamique depuis la catégorie WP Apidae template.
  2. Dans le panneau latéral droit, sélectionnez le slug du callback à utiliser.
  3. 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;
} );

Aller plus loin

Étiquettes