En av våra mer tekniska läsare frågade oss nyligen hur man verifierar om en PHP-funktion finns innan man integrerar ny kod i en WordPress-webbplats. Detta är viktigt för att säkerställa att din webbplats fungerar smidigt och undviker fel.
En av WordPress styrkor är dess flexibilitet och WPBeginner-teamet lägger regelbundet till anpassade funktioner för att förbättra vår webbplats funktionalitet. Vi förstår att anpassad PHP-kod kan misslyckas om den anropar en funktion som inte längre finns eller ännu inte har definierats.
I den här artikeln visar vi dig hur du enkelt kan kontrollera om en funktion finns innan du lägger till den i ditt WordPress-tema, vilket gör att du kan undvika potentiella fel i din kod.

Varför lägga till ‘Om funktionen finns’ i din anpassade kod?
WordPress är huvudsakligen skrivet i programmeringsspråket PHP. PHP är ett serversides programmeringsspråk som körs på din WordPress-värd-leverantörs servrar.
Eftersom PHP-kod måste köras klart innan sidan laddas i dina besökares webbläsare, finns det vissa begränsningar för den. En av dessa begränsningar är att om något går fel, kan det hindra hela sidan från att laddas.
I WordPress, om en saknad funktion hindrar resten av koden från att köras, så stannar den och visar ett kritiskt fel eller ett meddelande om fatalt fel.

Vad kan göra att en funktion plötsligt slutar fungera eller försvinner?
Det är ett mer vanligt WordPress-fel än du kanske tror.
Låt oss till exempel säga att ett av dina WordPress-plugins levereras med en funktion som du har lagt till i din temas header- eller footerområde. Att inaktivera pluginet gör att funktionen försvinner och orsakar det kritiska felet på din WordPress-webbplats.
Med det sagt, låt oss titta på hur man enkelt kontrollerar om en funktion finns innan man kör den i dina WordPress-temafiler.
Kontrollera om en funktion finns i WordPress
Lyckligtvis har programmeringsspråket PHP en inbyggd metod för att enkelt kontrollera om en funktion finns innan den körs.
Låt oss säga att du har en WordPress-funktion som visar aktuell tid med tidszonsinformation. Här är ett exempel på kodavsnitt som du kan använda för att prova det.
Du kan lägga till den direkt i din temas functions.php-fil, men i den här handledningen använder vi pluginet för kodsnuttar WPCode eftersom det är det säkraste och enklaste sättet att lägga till anpassad kod i WordPress.
Först måste du installera och aktivera WPCode Free Plugin. Om du behöver hjälp med detta, se vår steg-för-steg-guide för nybörjare om hur man installerar ett WordPress-plugin.
Efter aktivering måste du gå till Kodavsnitt » + Lägg till avsnitt i din WordPress-instrumentpanel. Väl där, för muspekaren över alternativet 'Lägg till din anpassade kod (nytt avsnitt)' och klicka sedan på knappen 'Använd avsnitt' som visas.

Detta öppnar en ny sida där du kan lägga till ditt anpassade kodavsnitt. Skriv en titel som 'Visa aktuell tid med tidszon' och klistra sedan in kodavsnittet nedan i fönstret Kodförhandsgranskning.
//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>";
}

Därefter behöver du välja ‘PHP Snippet’ från rullgardinsmenyn för kodtyp för att säkerställa att koden körs korrekt.
Slutligen bör du växla Aktivera-reglaget till På-läget och klicka på knappen 'Spara kodavsnitt' för att lagra ditt nya kodavsnitt.

För att anropa denna funktion måste du lägga till följande kod var som helst i ditt WordPress-tema där du vill visa aktuell tid.
<?php wpb_show_timezone(); ?>
Så här såg det ut på vår testnings webbplats.

Vad skulle nu hända om koden som ansvarar för att köra denna funktion försvinner?
Anropet till funktionen kommer att bryta din webbplats så här.

Låt oss lägga till en kontroll för att säkerställa att denna kod endast körs när funktionen finns.
Återigen, du måste lägga till koden direkt i din temas functions.php-fil eller använda ett plugin för kodsnuttar 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 existerar och returnerar Sant eller Falskt.
Vi lade sedan till en if-else-villkor för att vidta lämpliga åtgärder beroende på funktionens tillgänglighet.
Nu, när funktionen inte längre är tillgänglig, kommer koden helt enkelt att hoppa över den, och WordPress kommer att kunna ladda resten av din webbplats 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 guide om hur du enkelt visar kod på din WordPress-webbplats eller vårt experttips om bästa kodredigerare för Mac och Windows för redigering av WordPress-filer.
Om du gillade den här artikeln, prenumerera då på vår YouTube-kanal för WordPress-videoguider. Du kan också hitta oss på Twitter och Facebook.

kzain
Räddade mig från huvudvärk! Jag kan inte säga hur många gånger jag har lagt till kod bara för att mitt tema ska krascha för att en funktion inte fanns där. Superenkelt att implementera och håller min kod ren.
Tack för den tydliga förklaringen
Jiří Vaněk
Jag skulle vilja fråga, om PHP ger mig ett fel om en icke-existerande PHP-funktion, kan en sådan funktion aktiveras, eller måste det göras av serveradministratören? Och är det möjligt att funktionen beror på PHP-versionen? Det vill säga, att en viss funktion är tillgänglig i en version av PHP men inte i en annan?
WPBeginner Support
I det fallet finns funktionen inte så du behöver undersöka vilken specifik funktion det är för att hitta vad som orsakar felet. Därefter kan du antingen kontrollera med supporten vad som orsakar felet eller ta bort det som orsakar felet.
Admin
Rakib
really helpful
Joana Pereira
Bra idé Kovshenin. Jag förstår exakt vad du menar eftersom jag använde en anpassad funktion med kontaktformulär 7 (för att hämta IP-adressen på varje formulär) och varje gång pluginet uppdaterades, gick temat sönder.
Tack för tipset
Joana Pereira
kzain
varit där med pluginuppdateringar som också förstör teman! Att använda function_exists() är definitivt en game-changer för att förhindra dessa huvudvärk
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