Le WordPress d'aujourd'hui, décodé pour les développeurs

Elementor

Un Dynamic Tag Elementor personnalisé pour une valeur calculée à la volée

Pour une donnée propre au projet plutôt qu'un champ statique, un Dynamic Tag personnalisé étend proprement Elementor sans dupliquer de logique métier.

Par WordPress Développement • 31 janvier 2022 • 4 min de lecture • Aucun commentaire
Un Dynamic Tag Elementor personnalisé pour une valeur calculée à la volée

« Combien de jours reste-t-il avant la fin de cette offre ? » Cette valeur, recalculée à chaque affichage de page à partir d’une date stockée en base, devait apparaître dans plusieurs widgets différents d’un même site : un titre, un badge, un texte de bouton. Plutôt que de dupliquer le calcul dans chaque widget concerné, un Dynamic Tag personnalisé a centralisé cette logique en un seul endroit, réutilisable partout dans l’éditeur Elementor.

Les Dynamic Tags sont le mécanisme natif d’Elementor pour injecter une valeur calculée ou récupérée dynamiquement dans n’importe quel champ de widget qui l’accepte, à la place d’une saisie statique. En créer un sur mesure reste une opération accessible dès qu’on maîtrise les bases de l’API des widgets.

La structure minimale d’un Dynamic Tag

Un Dynamic Tag personnalisé est une classe PHP qui étend une classe de base fournie par Elementor, selon le type de donnée renvoyée : texte, nombre ou URL notamment. Pour une valeur textuelle simple comme un nombre de jours restants, la classe \Elementor\Core\DynamicTags\Tag constitue la base appropriée.

class WPM_Jours_Restants_Tag extends \Elementor\Core\DynamicTags\Tag {

    public function get_name() {
        return 'wpm-jours-restants';
    }

    public function get_title() {
        return 'Jours restants (offre)';
    }

    public function get_group() {
        return \Elementor\Modules\DynamicTags\Module::TEXT_CATEGORY;
    }

    public function get_categories() {
        return array( \Elementor\Modules\DynamicTags\Module::TEXT_CATEGORY );
    }

    public function render() {
        $date_fin = get_post_meta( get_the_ID(), 'date_fin_offre', true );
        if ( ! $date_fin ) {
            echo '';
            return;
        }
        $jours = (int) ceil( ( strtotime( $date_fin ) - time() ) / DAY_IN_SECONDS );
        echo $jours > 0 ? $jours . ' jour' . ( $jours > 1 ? 's' : '' ) : 'Offre terminée';
    }
}

L’enregistrement auprès d’Elementor

L'essentiel à retenir : Un Dynamic Tag encapsule une logique de calcul réutilisable ; La classe étend Elementor Core_Data_Tag ou une base adaptée ; L'enregistrement se fait via le hook elementor/dynamic_tags/register

Un Dynamic Tag ne devient visible dans l’éditeur qu’après un enregistrement explicite, effectué sur le hook elementor/dynamic_tags/register, qui reçoit le gestionnaire de tags en paramètre.

add_action( 'elementor/dynamic_tags/register', function( $dynamic_tags_manager ) {
    require_once __DIR__ . '/class-wpm-jours-restants-tag.php';
    $dynamic_tags_manager->register( new WPM_Jours_Restants_Tag() );
} );

Une fois ce code chargé, le tag apparaît directement dans le sélecteur d’icône « dynamique » de tout champ de widget compatible, aux côtés des Dynamic Tags natifs d’Elementor, sans distinction visuelle particulière pour l’utilisateur final.

Où ce tag a été réellement utilisé sur le projet

Trois emplacements différents ont consommé ce même Dynamic Tag, sans dupliquer une seule ligne de logique de calcul :

  • Un badge dans l’en-tête de la page annonçant l’urgence de l’offre.
  • Un texte de bouton d’appel à l’action, mentionnant le nombre de jours restants.
  • Une ligne dans un widget de compte à rebours personnalisé, affichée en complément du minuteur.

Chaque modification future de la logique de calcul — par exemple un ajustement du fuseau horaire ou du format d’affichage — ne nécessite qu’une seule modification, dans la classe du Dynamic Tag, répercutée automatiquement partout où le tag est utilisé.

Les limites de ce mécanisme

Un Dynamic Tag reste adapté à des valeurs calculées relativement simples et rapides à produire, puisqu’il s’exécute à chaque affichage de la page. Une opération lourde, comme un appel réseau vers un service externe sans mise en cache, dégraderait sensiblement le temps de génération de la page si elle était placée directement dans un Dynamic Tag sans précaution.

Un Dynamic Tag personnalisé mérite d’être aussi rapide qu’une simple lecture de métadonnée : toute opération plus lourde doit être mise en cache en amont.

En résumé

Encapsuler une logique de calcul dans un Dynamic Tag personnalisé évite la duplication de code entre widgets et centralise la maintenance en un seul point. Cette approche complète naturellement les widgets personnalisés eux-mêmes, dont la construction répond à des besoins différents, davantage structurels que ponctuels.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi