Depuis PHP 8.1, transmettre une valeur vide (null) à une fonction de PHP qui attend du texte, comme strlen(), trim() ou str_replace(), est déconseillé. Auparavant, PHP convertissait discrètement null en texte vide. Le résultat ne change pas encore : c’est un avis (Deprecated) qui annonce une règle plus stricte dans une future version, pas une panne.
Pourquoi cette erreur apparaît
- Une extension ou un thème passe à une fonction de texte une valeur qui n’existe pas : champ non rempli, métadonnée absente, réglage vide.
- Le site est passé à PHP 8.1 ou plus récent avec des extensions écrites pour PHP 7.
- Une ancienne version de WordPress : le cœur a corrigé ces appels au fil de ses mises à jour.
- Le mode débogage est actif sur le site en ligne, ce qui rend visibles des avis normalement réservés au journal.
Comment corriger le problème
Mettre WordPress et les extensions à jour
Si le chemin du message passe par wp-includes ou wp-admin, commencez par mettre WordPress à jour : les versions actuelles du cœur ont corrigé ces appels. S’il passe par wp-content/plugins ou wp-content/themes, mettez à jour l’élément nommé dans le chemin.
Remplir les champs restés vides
Quand l’avis n’apparaît que sur certaines pages, cherchez ce qu’elles ont en commun : un extrait, une description pour les moteurs de recherche, un champ personnalisé laissé vide. Le remplir fait souvent disparaître le message, ce qui confirme la piste.
Vérifier le mode débogage et l’environnement
Ces avis ne s’affichent que si WP_DEBUG est actif. Dans wp-config.php, vérifiez sa valeur, mais aussi WP_ENVIRONMENT_TYPE : quand WP_DEBUG n’est pas défini et que l’environnement est déclaré development, WordPress active le débogage tout seul. Sur un site en ligne, l’environnement doit valoir production.
define( 'WP_DEBUG', false );
define( 'WP_ENVIRONMENT_TYPE', 'production' );
Remplacer null par un texte vide
Dans votre code, convertissez la valeur avant de l’envoyer : l’opérateur ?? fournit un texte vide quand la variable vaut null. Évitez de masquer l’avis avec l’opérateur @, qui cacherait aussi de vraies erreurs.
$sous_titre = get_field( 'sous_titre' );
// Avant : echo esc_html( trim( $sous_titre ) );
echo esc_html( trim( $sous_titre ?? '' ) );
Avant de modifier wp-config.php ou votre code, gardez une copie des fichiers concernés pour pouvoir revenir en arrière.
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