WordPress et PHP 8 : Unknown format specifier « S »

WordPress et PHP 8 : Unknown format specifier « S »
WordPress Lecture 3 minutes • 10 novembre 2023

Voici un problème que j'ai vu plusieurs fois ces derniers temps, surtout depuis l'introduction de la version PHP 8 et au delà.
Les sites WordPress utilisant des thèmes obsolètes affichent alors parfois des erreurs d'affichage et des codes d'erreurs. La solution au problème étant de mettre à jour le code PHP dans le fichiers du thème.

Uncaught ValueError: Unknown format specifier "S"

PHP Fatal error: Uncaught ValueError: Unknown format specifier "S" in MONFICHIER.php:162

Error 503 Backend fetch failed

D'autres erreurs liées au passage à PHP 8 peuvent se manifester par l'affichage de pages en Erreur 503 comme ci-dessous :

Error 503 Backend fetch faild sous WordPress au passage PHP 8

1er réflexe : activer le debug et debug_log dans wp-config.php

Pour commencer, il faut identifier précisément le fichier et la ligne de code qui est en erreur.
Modifiez le fichier wp-config.php à la racine du site (via votre client FTP comme FileZilla) et ajoutez en fin de fichier les lignes suivantes :

define('WP_DEBUG', true);
define( 'WP_DEBUG_LOG', true);

2nde étape : visiter les pages qui provoquent l'erreur et ouvrir le fichier debug.log

Visitez librement les pages qui ne se chargent pas correctement.
Cela va créer automatiquement un fichier debug.log dans le dossier wp-content de votre installation WordPress.

Ouvrez-le ensuite pour y trouver les précieuses informations !

3ème étape : interpréter et corriger le code

Si le fichier debug.log vous indique l'erreur PHP Fatal error: Uncaught ValueError: Unknown format specifier "S", alors repérez la ligne et le nom du fichier et changez le S majuscule par un s minuscule dans le fichier concerné. Le problème sera réglé.
PHP 8 exige que ce soit un s minuscule dans les variable %s !

Par exemple :

sprintf('%1$S Sélectionnés pour vous ...)

Devient :

sprintf('%1$s Sélectionnés pour vous ...)

Le fichier debug.log peut indiquer d'autres erreurs. Lisez les attentivement et repérez à chaque fois quel fichier et quelle ligne pose problème avant d'intervenir très précisément sur chaque erreur relevée.

Une fois toutes les erreurs PHP corrigées

N'oubliez pas de changer les 2 lignes de debug dans le fichier wp-config.php et de passer à "false" :

define('WP_DEBUG', false);
define( 'WP_DEBUG_LOG', false);

Ainsi que de supprimer le fichier debug.log situé dans le dossier wp-content de votre installation WordPress.
Cela évitera d'exposer votre site WordPress a des failles exploitables par les hackers.

Plus d'informations sur l'erreur 503 Backend fetch failed en Français grâce à l'article du site LeSuperClick


Si cet article vous a aidé, lâchez votre plus bel applaudissement en remerciement ! 🤗