Nyligen frågade en användare oss hur man kontrollerar om en PHP-funktion finns innan man lägger till ny kod på din WordPress-webbplats som är beroende av den.
Det bästa med WordPress är dess flexibilitet, inklusive möjligheten att add to dina egna customize-funktioner till din website. Men ibland kanske din customize-kod inte fungerar eftersom funktionen den hänvisar till inte finns längre.
I den här artikeln visar vi hur du enkelt kontrollerar om en funktion finns befintlig innan du lägger till den i ditt WordPress-tema.
Varför add to ”If Function Exists” till din custom code?
WordPress är huvudsakligen skrivet i programmeringsspråket PHP. PHP är ett programmeringsspråk på serversidan som körs på din WordPress hosting providers servrar.
Eftersom PHP-koden måste vara slutförd innan sidan hämtar i dina besökares webbläsare finns det vissa limiter för den. En av dessa limiter är att om något går fel kan det förhindra att hela page hämtar.
Om en saknad funktion hindrar resten av koden från att runna i WordPress stannar den och visar ett critical error- eller fatal error-meddelande.
Vad kan göra att en funktion plötsligt slutar fungera eller försvinner?
Det är ett vanligare error i WordPress än du kanske tror.
Låt oss till exempel säga att ett av dina WordPress-tillägg kommer med en funktion som du har addat till ditt temas header eller footer area. Om du deaktiverar tillägget försvinner funktionen och det kritiska error et uppstår på din WordPress website.
Med detta sagt, låt oss ta en titt på hur du enkelt kan kontrollera om en funktion finns innan du kör den i dina WordPress theme-filer.
Kontrollera om en funktion finns i WordPress
Lyckligtvis kommer programmeringsspråket PHP med en built-in metod för att enkelt kontrollera att det finns en funktion innan den körs.
Låt oss säga att du har en WordPress-funktion som displayed den aktuella tiden med tidszoninformation. Här är ett exempel på code snippet som du kan använda för att prova det.
Du kan lägga till den direkt i ditt temas functions.php-fil, men i den här tutorialen använder vi WPCode code snippet plugin eftersom det är det säkraste och enklaste sättet att lägga till custom code i WordPress.
Först måste du installera och aktivera WPCode Free Plugin. Om du behöver hjälp med detta kan du vänligen läsa vår Step-by-Step guide för nybörjare om hur du installerar ett plugin för WordPress.
Vid aktivering måste du gå till Code Snippets ” + Add Snippet på din WordPress dashboard. När du är där, hoverar du musen över alternativet ”Add Your Custom Code (New Snippet)” och klickar sedan på knappen ”Use snippet” som visas.
Detta öppnar en new page där du kan add to your custom snippet. Skriv in en rubrik som ”Display Current Time With Timezone” och klistra sedan in code snippet under i rutan Code Preview.
//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>";
}
Efter det måste du selecta ”PHP Snippet” från rullgardinsmenyn Code Type för att se till att koden körs korrekt.
Slutligen ska du toggle Activate till positionen On och klicka på knappen ”Save Snippet” för att lagra your new code snippet.
För att anropa denna funktion måste du add to följande kod var som helst i ditt WordPress theme där du vill visa aktuell tid.
<?php wpb_show_timezone(); ?>
Så här såg det ut på vår testande website.
Vad skulle nu hända om koden som är responsiv för att utföra den här funktionen försvinner?
Anropet till funktionen kommer att bryta din website så här.
Låt oss add to en kontroll för att se till att den här koden bara körs när funktionen finns.
Återigen måste du add koden direkt till ditt temas functions.php-fil eller använda ett code snippet plugin som WPCode (rekommenderas):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
I den här koden använder vi funktionen function_exists()
. Denna funktion kontrollerar om en funktion finns och returnerar True eller False.
Vi har sedan lagt till ett if-else-villkor för att vidta lämpliga actions beroende på om funktionen är available.
När funktionen inte längre är available kommer koden helt enkelt att hoppa över den och WordPress kommer att kunna hämta resten av din website normalt.
Vi hoppas att den här artikeln hjälpte dig att lära dig hur du kontrollerar om en funktion finns i WordPress. Du kanske också vill se vår kompletta guide för felsökning i WordPress eller våra expertval för de bästa drag and drop page builders i WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and 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