Uncaught TypeError: Cannot read properties of undefined (reading 'settings') : ce message, apparu dans la console juste après la désactivation d’une extension ajoutant des mises en page personnalisées pour les Containers, ne semblait à première vue concerner que le widget de cette extension. Sur la page publiée, pourtant, ce sont deux widgets natifs sans aucun rapport qui ont cessé de fonctionner correctement.
Symptôme : des widgets sans rapport cessent de réagir
Après la désactivation de l’extension concernée, un accordéon natif d’Elementor ne s’ouvre plus au clic, et un carrousel d’images reste bloqué sur sa première diapositive. Aucun de ces deux widgets n’appartient à l’extension désactivée, ce qui rend le diagnostic initial trompeur : rien, en apparence, ne relie la cause à l’effet observé.
La console du navigateur affiche pourtant une seule erreur, déclenchée dès le chargement de la page, avant même que l’utilisateur n’interagisse avec quoi que ce soit.
Diagnostic : remonter à la source dans la console
Le message d’erreur pointe vers un fichier JavaScript précis, encore présent dans les scripts chargés par la page malgré la désactivation de l’extension. Un examen de l’onglet Réseau confirme le problème : ce fichier reste enregistré et chargé, alors que le plugin qui l’a enregistré est pourtant désactivé.

Ce script orphelin tente d’initialiser un composant en cherchant un objet de configuration qui n’existe plus, puisque la partie PHP responsable de générer cet objet a bien été désactivée, elle. Le script échoue dès son exécution, avant même d’atteindre la fin du fichier, et cette interruption brutale du fil d’exécution du navigateur empêche les scripts suivants, enregistrés dans le même groupe, de s’exécuter à leur tour, y compris ceux des widgets natifs sans rapport.
La cause précise
La cause tient à un enregistrement de script mal conditionné dans le code de l’extension, un cas fréquent lorsque l’enregistrement du script est réalisé au niveau global du thème ou d’un mu-plugin, plutôt que dans le fichier principal de l’extension elle-même :
// Enregistré ailleurs que dans le plugin, donc jamais désactivé avec lui
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script(
'mise-en-page-containers',
get_stylesheet_directory_uri() . '/js/mise-en-page-containers.js',
array( 'jquery' ),
'1.0',
true
);
} );
Ce script a été enregistré directement dans le fichier functions.php du thème, au moment de l’installation de l’extension, plutôt que dans le fichier de l’extension elle-même. La désactivation de l’extension retire bien sa partie PHP fonctionnelle, mais laisse ce fichier JavaScript orphelin actif, sans configuration associée.
Correctif : isoler et retirer le script orphelin
Le correctif consiste à retirer l’appel wp_enqueue_script concerné du fichier functions.php du thème, puis à vérifier, via l’onglet Réseau, que ce fichier ne se charge effectivement plus après rechargement de la page.
- Identifier le fichier fautif via le message d’erreur de la console, qui indique le nom du script en cause.
- Rechercher dans le code du thème et des extensions actives l’appel
wp_enqueue_scriptouwp_register_scriptcorrespondant. - Retirer cet appel s’il ne dépend plus d’aucune fonctionnalité active, ou le conditionner correctement s’il doit être conservé.
- Recharger la page en navigation privée et vérifier la disparition de l’erreur dans la console.
Prévention : un enregistrement de script qui suit son propre plugin
La règle à retenir : un script JavaScript propre à une extension doit toujours être enregistré depuis le fichier principal de cette extension, jamais depuis le thème, pour que sa désactivation retire automatiquement l’ensemble de ce qu’elle a ajouté. Un test de désactivation de chaque extension, suivi d’un contrôle de la console sur les pages concernées, mérite de figurer dans la checklist de recette avant mise en production.
Un script orphelin ne fait pas seulement échouer son propre widget : il peut suffire à interrompre l’exécution de tous ceux qui le suivent dans la même page.
En résumé
Une erreur JavaScript qui semble toucher des widgets sans rapport après la désactivation d’un addon Container révèle presque toujours un script orphelin enregistré au mauvais endroit, en dehors du plugin auquel il appartient réellement. Isoler le fichier fautif via la console, puis vérifier son point d’enregistrement, permet de corriger la cause plutôt que de contourner le symptôme.