PHP doit exécuter une fonction dont il ne trouve la définition nulle part. Le plus souvent, elle appartient à une extension désactivée ou absente (ACF, WooCommerce…), ou à une extension de PHP que le serveur n’a pas activée. Le nom de la fonction, juste après « function », est le meilleur indice pour remonter à son origine.
Pourquoi cette erreur apparaît
- Le thème ou une extension appelle une fonction d’une autre extension qui a été désactivée ou supprimée, par exemple get_field() d’ACF.
- Une extension de PHP nécessaire n’est pas active sur le serveur : mbstring pour les fonctions mb_, cURL pour curl_, GD pour les fonctions d’image.
- Une extension récente utilise une fonction de WordPress absente de votre version, trop ancienne.
- Un code personnalisé appelle une fonction mal orthographiée, ou définie dans un fichier qui n’est plus chargé.
- La fonction a été retirée de PHP 8 (create_function, each…) : ce cas a sa propre fiche.
Comment corriger le problème
Identifier la fonction et son appelant
Lisez le nom qui suit « Call to undefined function ». Son préfixe trahit souvent son origine : get_field ou the_field viennent d’ACF, wc_ de WooCommerce, mb_ de l’extension PHP mbstring, curl_ de cURL. Le chemin après « in » montre qui l’appelle : votre thème, une extension ou un code ajouté.
Réactiver l’extension dont dépend la fonction
Vérifiez que l’extension qui fournit la fonction est toujours installée et active : un thème bâti avec ACF, ou un module complémentaire de WooCommerce, plante dès que l’extension principale disparaît. Si l’administration ne répond plus, renommez par FTP le dossier de l’extension qui fait l’appel, réactivez celle qui manque, puis rendez son nom au dossier.
Activer l’extension PHP manquante
Pour une fonction de PHP lui-même (mb_, curl_, image, zip, intl), ouvrez le sélecteur de version PHP de l’hébergement et cochez l’extension correspondante, ou demandez-la au support. Sur un VPS sous Debian ou Ubuntu, installez les paquets voulus pour votre version de PHP, ici 8.3, puis redémarrez PHP.
sudo apt install php8.3-mbstring php8.3-curl php8.3-gd
sudo systemctl restart php8.3-fpm
Mettre WordPress à niveau
Si la fonction commence par wp_ et que l’erreur a suivi l’installation d’une extension, votre WordPress est peut-être trop ancien pour elle. Désactivez cette extension par FTP, faites une sauvegarde complète, mettez WordPress à jour, puis réactivez-la.
Protéger les appels dans votre code
Dans un thème enfant ou un extrait de code, entourez l’appel d’un test function_exists() : si l’extension est un jour désactivée, la page s’affiche sans ce bloc au lieu de planter.
if ( function_exists( 'get_field' ) ) {
echo esc_html( get_field( 'sous_titre' ) );
}
Sauvegardez le site avant de réactiver, mettre à jour ou modifier quoi que ce soit, et conservez le message complet : il servira si vous devez demander de l’aide.
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