« 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

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.