« Too few arguments to function » : l’erreur ArgumentCountError sur WordPress

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

BloquantCompatibilité PHP 8
Le message affiché
Fatal error: Uncaught ArgumentCountError: Too few arguments to function mon_theme_filtre_titre(), 1 passed in /home/monsite/public_html/wp-includes/class-wp-hook.php on line 326 and exactly 2 expected
Autres formulations du même message 4
  • PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function Mon_Extension\Admin::save_meta(), 2 passed in /home/monsite/public_html/wp-includes/class-wp-hook.php on line 324 and exactly 3 expected
  • Fatal error: Uncaught ArgumentCountError: Too few arguments to function ma_fonction(), 0 passed and at least 1 expected
  • Fatal error: Uncaught ArgumentCountError: strlen() expects exactly 1 argument, 0 given
  • Warning: strlen() expects exactly 1 parameter, 0 given

Une fonction attend un certain nombre d’informations (des arguments) et en reçoit moins. Le message précise combien elle en a reçu (« 1 passed ») et combien il lui en faut (« exactly 2 expected »). Depuis PHP 7.1, ce manque arrête la page ; PHP 8 applique aussi la règle aux fonctions intégrées du langage, qui se contentaient jusque-là d’un avertissement.

Pourquoi cette erreur apparaît

  • Une fonction branchée sur un crochet WordPress (add_filter ou add_action) attend plusieurs arguments, mais le nombre accepté n’a pas été déclaré : WordPress ne lui en transmet alors qu’un seul.
  • Une extension ou un thème a changé la façon d’appeler l’une de ses fonctions, et un code personnalisé qui s’appuie dessus n’a pas suivi.
  • Une extension principale et son module complémentaire ne sont pas à la même version : l’un appelle l’autre avec l’ancienne liste d’arguments.
  • Un code ancien appelle une fonction de PHP sans tous ses arguments, ce que PHP 8 ne laisse plus passer.

Comment corriger le problème

Lire les deux chemins du message

Ce message cite souvent deux fichiers. Celui qui suit « passed in » est l’appelant : s’il s’agit de wp-includes/class-wp-hook.php, la fonction est branchée sur un crochet WordPress et le défaut vient de son enregistrement. Le fichier cité tout à la fin, après le dernier « in », contient la fonction elle-même ; son dossier désigne l’extension ou le thème à examiner.

Mettre à jour les extensions qui vont ensemble

Mettez à jour l’extension citée, mais aussi celles qui travaillent avec elle, comme les modules d’une même boutique ou d’un même constructeur de pages. Si l’administration est bloquée, désactivez le module en renommant son dossier dans wp-content/plugins, puis faites les mises à jour avant de le réactiver.

Mettre de côté un code personnalisé

Si le fichier en cause est le functions.php de votre thème enfant ou une extension d’extraits de code comme Code Snippets ou WPCode, désactivez l’extrait concerné. Ces outils prévoient un mode sans échec pour reprendre la main quand un extrait fait planter le site.

Déclarer le nombre d’arguments du crochet

Quand la fonction est branchée par add_filter() ou add_action(), le quatrième paramètre indique combien d’arguments WordPress doit lui passer, et il vaut 1 par défaut. Alignez-le sur ce qu’attend la fonction, ou donnez une valeur par défaut aux arguments facultatifs.

// La fonction attend 2 arguments : le titre et l'ID de l'article
add_filter( 'the_title', 'mon_theme_filtre_titre', 10, 2 );

function mon_theme_filtre_titre( $titre, $post_id = 0 ) {
	return $titre;
}

Gardez une copie de functions.php, ou du fichier que vous modifiez, avant d’y toucher : une parenthèse oubliée suffit à provoquer une autre erreur fatale.

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