Ajouté récemment, un utilisateur nous a demandé comment vérifier l’existence d’une fonction PHP avant d’ajouter un nouveau code à votre site WordPress qui en dépend.
La meilleure partie de WordPress est sa flexibilité, y compris la possibilité d’ajouter vos propres fonctions personnalisées à votre site. Cependant, il arrive que votre code personnalisé ne fonctionne pas parce que la fonction à laquelle il se réfère n’existe plus.
Dans cet article, nous allons vous afficher comment vérifier facilement si une fonction existe avant de l’ajouter à votre thème WordPress.
Pourquoi ajouter la fonction « Si la fonction existe » à votre code personnalisé ?
WordPress est principalement écrit en langage de programmation PHP. PHP est un langage de programmation côté serveur qui fonctionne sur les serveurs de votre fournisseur d’hébergement WordPress.
Comme le code PHP doit être exécuté avant que la page ne soit chargée dans les navigateurs de vos internautes, il présente certaines limites. L’une de ces limitations est que si quelque chose ne fonctionne pas correctement, cela peut empêcher le chargement de la page entière.
Dans WordPress, si une fonction manquante empêche le reste du code de s’exécuter, celui-ci s’arrête et affiche un message d’erreur critique ou d’erreur fatale.
Qu’est-ce qui peut faire qu’une fonction cesse soudainement de fonctionner ou disparaisse ?
Il s’agit d’une erreur WordPress plus fréquente qu’on ne le pense.
Par exemple, disons que l’une de vos extensions WordPress est accompagnée d’une fonction que vous avez ajoutée à la zone de l’en-tête ou du pied de page de votre thème. Désactiver l’extension fera disparaître la fonction et provoquera l’erreur critique sur votre site WordPress.
Ceci étant dit, voyons comment vérifier facilement si une fonction existe avant de l’exécuter dans les fichiers de votre thème WordPress.
Vérifier l’existence d’une fonction dans WordPress
Heureusement, le langage de programmation PHP intègre une méthode permettant de vérifier facilement l’existence d’une fonction avant de l’exécuter.
Disons que vous avez une fonction WordPress qui affiche l’heure actuelle avec des informations sur le fuseau horaire. Voici un extrait de code que vous pouvez utiliser pour l’essayer.
Vous pouvez l’ajouter directement au fichier functions.php de votre thème, mais dans ce tutoriel, nous utiliserons l’extension d’extraits de code WPCode car c’est le moyen le plus sûr et le plus simple d’ajouter du code personnalisé dans WordPress.
Tout d’abord, vous devez installer et activer l’extension gratuite WPCode. Si vous avez besoin d’aide pour ce faire, veuillez consulter notre guide du débutant étape par étape sur l ‘installation d’une extension WordPress.
Une fois activé, vous devez vous rendre dans Code Snippets » + Add Snippet sur votre tableau de bord WordPress. Une fois là, survolez avec votre souris l’option » Ajouter votre code personnalisé (nouvel extrait) « , puis cliquez sur le bouton » Utiliser l’extrait » qui apparaît.
Une nouvelle page s’ouvre, dans laquelle vous pouvez ajouter votre extrait personnalisé. Saisissez un titre tel que « Afficher l’heure actuelle avec le fuseau horaire », puis collez l’extrait de code ci-dessous dans le volet Prévisualisation du code.
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}
Ensuite, vous devez sélectionner « Extrait PHP » dans la liste déroulante Type de code pour vous assurer que le code s’exécute correctement.
Enfin, vous devez activer le commutateur Activate et cliquer sur le bouton « Save Snippet » (enregistrer l’extrait de code) pour stocker votre nouvel extrait de code.
Pour appeler cette fonction, vous devrez ajouter le code suivant à n’importe quel endroit de votre thème WordPress où vous souhaitez afficher l’heure actuelle.
<?php wpb_show_timezone(); ?>
Voici ce que cela donne sur notre site de test.
Maintenant, que se passerait-il si le code responsable de l’exécution de cette fonction disparaissait ?
L’appel à la fonction cassera votre site comme suit.
Ajoutons une vérification pour nous assurer que ce code s’exécute uniquement lorsque la fonction existe.
Là encore, vous devrez ajouter le code directement dans le fichier functions.php de votre thème ou utiliser une extension d’extraits de code telle que WPCode (recommandé) :
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
Dans ce code, nous utilisons la fonction function_exists()
. Cette fonction vérifie si une fonction existe et renvoie True ou False.
Nous avons ensuite ajouté une condition if-else pour prendre les mesures appropriées en fonction de la disponibilité de la fonction.
Désormais, lorsque la fonction n’est plus disponible, le code va simplement l’Aller/au, et WordPress pourra charger le reste de votre site normalement.
Nous espérons que cet article vous a aidé à apprendre comment vérifier si une fonction existe dans WordPress. Vous pouvez également consulter notre guide complet de dépannage WordPress ou nos choix d’experts pour les meilleurs constructeurs de pages WordPress par glisser-déposer.
Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
Rakib
really helpful
Joana Pereira
Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.
Thanks for the tip
Joana Pereira
kovshenin
Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well