WordPress prévient qu’une extension ou un thème utilise encore une fonction, un crochet (hook), une classe, un fichier ou un argument qu’il a remplacé. Le message donne la version concernée et, souvent, le remplaçant après « Use ». L’ancien élément marche encore mais pourra disparaître. C’est un avis (Deprecated), affiché seulement en mode débogage : il ne casse rien pour l’instant.
Pourquoi cette erreur apparaît
- Une extension ou un thème n’a pas été mis à jour depuis longtemps, ou n’est plus maintenu.
- Une nouvelle version de WordPress a rendu obsolète une fonction que l’extension utilise encore, le temps que son éditeur s’adapte.
- Un extrait de code copié d’un ancien tutoriel, dans functions.php ou une extension d’extraits, utilise une fonction remplacée.
- Le débogage est resté actif sur le site en ligne, ce qui affiche ces avis à tous les visiteurs.
Comment corriger le problème
Décoder le message
Il contient trois informations : l’élément obsolète (après Function, Hook, Class ou File), la version de WordPress qui l’a remplacé, et le remplaçant conseillé après « Use … instead ». Le fichier wp-includes/functions.php cité à la fin n’est que l’endroit où WordPress émet l’avis.
Mettre à jour thème et extensions
Après une sauvegarde, installez les dernières versions. Rechargez ensuite la page : si l’avis a disparu, il n’y a rien d’autre à faire.
Retrouver qui utilise l’élément
Cherchez le nom de la fonction ou du crochet dans les dossiers des extensions et du thème, avec la recherche de votre éditeur de code ou, si vous avez un accès SSH, la commande grep. Query Monitor indique aussi l’extension à l’origine de chaque avis.
grep -rn "get_page_by_title" wp-content/plugins wp-content/themes
Couper l’affichage, garder un journal
Ces avis n’ont rien à faire sous les yeux des visiteurs. Réglez WP_DEBUG_DISPLAY sur false dans wp-config.php et activez WP_DEBUG_LOG, en modifiant ces lignes si elles existent déjà : WordPress continue de noter les avis dans wp-content/debug.log. Signalez-les à l’éditeur concerné, puis remettez WP_DEBUG à false quand tout est réglé.
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );
Remplacer la fonction dans votre code
Si l’appel se trouve dans votre propre code, utilisez le remplaçant indiqué par le message. Pour get_page_by_title(), par exemple, WordPress conseille une requête WP_Query sur le titre.
$requete = new WP_Query( array(
'post_type' => 'page',
'title' => 'Contact',
'posts_per_page' => 1,
'no_found_rows' => true,
) );
$page = $requete->have_posts() ? $requete->posts[0] : null;
Faites une sauvegarde avant les mises à jour, et ne modifiez pas les fichiers d’une extension tierce : signalez plutôt l’avis à son éditeur.
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