Elementor 3.5, sortie début décembre, introduit un changement discret mais qui mérite l’attention de quiconque maintient des widgets personnalisés : le hook historique elementor/widgets/widgets_registered est officiellement déprécié au profit d’un nouveau hook, elementor/widgets/register. L’ancien continue de fonctionner pour l’instant, mais génère un message de dépréciation visible en mode debug, et sa suppression complète est annoncée pour une version ultérieure.
Sur nos projets maintenus, nous avons profité de cette sortie pour migrer l’ensemble des widgets maison encore attachés à l’ancien hook. L’opération est simple, mais mérite d’être bien comprise avant d’être appliquée en masse.
Ce qui change concrètement
L’ancien hook elementor/widgets/widgets_registered recevait le Widgets_Manager en argument, sur lequel on appelait register_widget_type() avec une instance de widget :
// Ancienne méthode, dépréciée depuis Elementor 3.5
add_action( 'elementor/widgets/widgets_registered', function( $widgets_manager ) {
require_once __DIR__ . '/widgets/class-widget-temoignage.php';
$widgets_manager->register_widget_type( new Widget_Temoignage() );
} );
Le nouveau hook elementor/widgets/register conserve une logique très proche, avec deux différences : le nom de la méthode d’enregistrement passe de register_widget_type() à register(), et le hook lui-même est renommé.
// Nouvelle méthode, recommandée à partir d'Elementor 3.5
add_action( 'elementor/widgets/register', function( $widgets_manager ) {
require_once __DIR__ . '/widgets/class-widget-temoignage.php';
$widgets_manager->register( new Widget_Temoignage() );
} );

Pourquoi Elementor fait ce changement
Le nom widgets_registered, au participe passé, laissait entendre que l’enregistrement était déjà terminé au moment du hook, ce qui prêtait à confusion. Le nouveau nom, à l’impératif, correspond davantage à la réalité : c’est le moment où l’on doit effectuer l’enregistrement, pas une notification après coup. Ce genre de clarification s’inscrit dans un effort plus large d’Elementor pour uniformiser le nommage de ses hooks internes.
Assurer une compatibilité ascendante simple
Pour un plugin distribué à plusieurs clients dont certains sont encore sur une version antérieure à 3.5, il est possible de détecter la disponibilité du nouveau hook et de basculer automatiquement :
if ( did_action( 'elementor/loaded' ) && version_compare( ELEMENTOR_VERSION, '3.5.0', '>=' ) ) {
add_action( 'elementor/widgets/register', function( $widgets_manager ) {
$widgets_manager->register( new Widget_Temoignage() );
} );
} else {
add_action( 'elementor/widgets/widgets_registered', function( $widgets_manager ) {
$widgets_manager->register_widget_type( new Widget_Temoignage() );
} );
}
Cette approche évite un avertissement de dépréciation sur les installations à jour, tout en gardant le fonctionnement intact sur les installations plus anciennes qui n’ont pas encore migré vers 3.5.
Liste de vérification pour la migration
- Rechercher, dans le code du thème et des plugins maison, toute occurrence de
widgets_registeredetregister_widget_type. - Remplacer par
elementor/widgets/registeretregister(), en testant sur un environnement de staging à jour. - Activer
WP_DEBUGpour vérifier qu’aucun message de dépréciation ne subsiste dans les logs après migration. - Documenter la version minimale d’Elementor désormais requise si la compatibilité ascendante n’est pas conservée.
| Élément | Avant 3.5 | À partir de 3.5 |
|---|---|---|
| Hook | elementor/widgets/widgets_registered | elementor/widgets/register |
| Méthode d’enregistrement | register_widget_type() | register() |
| Statut | Déprécié, encore fonctionnel | Recommandé |
Une dépréciation annoncée n’est jamais urgente le jour de sa sortie, mais elle le devient toujours plus tard, au pire moment. Nous traitons systématiquement ces migrations dans les deux semaines suivant l’annonce, pendant que le contexte est encore frais.
En résumé
La migration de widgets_registered vers register reste mineure en volume de code, mais elle mérite d’être traitée rapidement plutôt que reportée : les hooks dépréciés d’Elementor finissent toujours par disparaître après quelques versions majeures. Un simple test de version PHP permet, en attendant, de maintenir la compatibilité avec les installations plus anciennes sans dupliquer la logique métier des widgets eux-mêmes.