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