« Function … was called incorrectly » : l’avis « doing it wrong » de WordPress

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

AvertissementErreurs PHP
Le message affiché
Notice: Function wp_enqueue_script was called <strong>incorrectly</strong>. Scripts and styles should not be registered or enqueued until the <code>wp_enqueue_scripts</code>, <code>admin_enqueue_scripts</code>, or <code>login_enqueue_scripts</code> hooks.
Autres formulations du même message 4
  • Notice: La fonction register_rest_route a été appelée de façon incorrecte.
  • PHP Notice: Function wpdb::prepare was called <strong>incorrectly</strong>. The query argument of wpdb::prepare() must have a placeholder.
  • Notice: Function is_singular was called <strong>incorrectly</strong>. Conditional query tags do not work before the query is run. Before then, they always return false.
  • Notice: Function WP_Scripts::localize was called <strong>incorrectly</strong>. The <code>$l10n</code> parameter must be an array. To pass arbitrary data to scripts, use the <code>wp_add_inline_script()</code> function instead.

C’est l’avis « doing it wrong » de WordPress : une extension ou un thème a utilisé une fonction de WordPress au mauvais moment ou de la mauvaise façon. Le nom de la fonction suit « Function », et la phrase d’après explique la règle enfreinte. Le site fonctionne en général : ce message, visible seulement quand le débogage est actif, s’adresse au développeur.

Pourquoi cette erreur apparaît

  • Une extension ou le thème appelle une fonction trop tôt, avant que WordPress soit prêt : scripts ajoutés hors des crochets prévus, balises conditionnelles comme is_singular() utilisées avant la requête.
  • Les arguments transmis ne respectent pas les règles : requête wpdb::prepare() sans marqueur, route de l’API REST sans permission_callback, données mal formées pour un script.
  • Le code a été écrit pour une ancienne version de WordPress, qui a ajouté ce contrôle depuis.
  • Le débogage (WP_DEBUG) est resté actif sur le site en ligne, ce qui rend l’avis visible à tous.

Comment corriger le problème

Lire la fonction et la règle enfreinte

La fonction citée (wp_enqueue_script, wpdb::prepare, register_rest_route…) et la phrase qui suit disent ce qui cloche. Le fichier mentionné à la fin, wp-includes/functions.php, est celui qui émet l’avis, pas le fautif. Cherchez plutôt un indice dans l’explication : un nom de script (« handle »), une route ou un identifiant qui rappelle une extension.

Mettre à jour, puis tester les extensions

Mettez à jour les extensions et le thème. Si l’avis demeure, désactivez les extensions une à une, de préférence sur une copie du site, jusqu’à ce qu’il disparaisse : la dernière désactivée est la responsable.

Nommer le coupable avec Query Monitor

L’extension gratuite Query Monitor regroupe ces appels dans un panneau « Doing it Wrong » et indique, pour chacun, l’extension ou le thème qui l’a déclenché. Désactivez-la une fois l’enquête terminée.

Garder l’avis hors de la vue des visiteurs

Pour conserver la trace de ces avis le temps que l’éditeur corrige, laissez le débogage actif mais sans affichage, avec un journal dans wp-content/debug.log. Remplacez les lignes existantes de wp-config.php plutôt que de les dupliquer : une constante définie deux fois provoque elle-même un avertissement. Quand l’avis a disparu, WP_DEBUG peut revenir à false.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Appeler la fonction au bon endroit

Pour votre propre code, la documentation de la fonction précise le crochet ou les arguments attendus. Le cas le plus fréquent, l’ajout de scripts et de feuilles de style, se règle en passant par le crochet wp_enqueue_scripts.

add_action( 'wp_enqueue_scripts', function () {
	wp_enqueue_script(
		'mon-slider',
		get_stylesheet_directory_uri() . '/js/slider.js',
		array( 'jquery' ),
		'1.0',
		true
	);
} );

Sauvegardez wp-config.php avant de le modifier, et testez les désactivations d’extensions sur une copie du site si vous le pouvez, surtout pour une boutique en ligne.

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur