Kürzlich fragte uns ein Benutzer, wie er überprüfen kann, ob eine PHP-Funktion existiert, bevor er neuen Code in seine WordPress-Site einfügt, der sich auf diese Funktion bezieht.
Das Beste an WordPress ist seine Flexibilität, einschließlich der Möglichkeit, Ihre eigenen benutzerdefinierten Funktionen zu Ihrer Website hinzuzufügen. Manchmal kann es jedoch vorkommen, dass Ihr benutzerdefinierter Code nicht funktioniert, weil die Funktion, auf die er sich bezieht, nicht mehr existiert.
In diesem Artikel zeigen wir Ihnen, wie Sie ganz einfach überprüfen können, ob eine Funktion existiert, bevor Sie sie zu Ihrem WordPress-Theme hinzufügen.
Warum sollten Sie Ihrem benutzerdefinierten Code eine „If Function Exists“ hinzufügen?
WordPress ist hauptsächlich in der Programmiersprache PHP geschrieben. PHP ist eine serverseitige Programmiersprache, die auf den Servern Ihres WordPress-Hosting-Anbieters läuft.
Da der PHP-Code erst fertiggestellt werden muss, bevor die Seite in den Browsern Ihrer Besucher geladen wird, gibt es gewisse Einschränkungen. Eine dieser Einschränkungen besteht darin, dass, wenn etwas schief geht, die gesamte Seite nicht geladen werden kann.
Wenn in WordPress eine fehlende Funktion die Ausführung des restlichen Codes verhindert, wird dieser angehalten und eine kritische oder fatale Fehlermeldung angezeigt.
Was kann dazu führen, dass eine Funktion plötzlich nicht mehr funktioniert oder verloren geht?
Das ist ein häufiger WordPress-Fehler, als Sie vielleicht denken.
Nehmen wir an, eines Ihrer WordPress-Plugins verfügt über eine Funktion, die Sie in den Kopf- oder Fußzeilenbereich Ihres Themes eingefügt haben. Wenn Sie das Plugin deaktivieren, wird die Funktion verschwinden und den kritischen Fehler auf Ihrer WordPress-Website verursachen.
Schauen wir uns also an, wie man ganz einfach überprüfen kann, ob eine Funktion existiert, bevor man sie in den WordPress-Theme-Dateien ausführt.
Prüfen, ob eine Funktion in WordPress vorhanden ist
Glücklicherweise verfügt die Programmiersprache PHP über eine eingebaute Methode, mit der sich die Existenz einer Funktion vor deren Ausführung leicht überprüfen lässt.
Angenommen, Sie haben eine WordPress-Funktion, die die aktuelle Zeit mit Zeitzoneninformationen anzeigt. Hier ist ein Beispiel-Code-Schnipsel, den Sie verwenden können, um es zu versuchen.
Sie können ihn direkt in die Datei functions.php Ihres Themes einfügen, aber in diesem Tutorial werden wir das WPCode Code Snippet Plugin verwenden, weil es die sicherste und einfachste Methode ist, individuellen Code in WordPress hinzuzufügen.
Zuerst müssen Sie das WPCode Free Plugin installieren und aktivieren. Wenn Sie dabei Hilfe benötigen, lesen Sie bitte unsere Schritt-für-Schritt-Anleitung für Anfänger , wie man ein WordPress Plugin installiert.
Nach der Aktivierung müssen Sie auf Ihrem WordPress-Dashboard zu Code Snippets “ + Snippet hinzufügen gehen. Fahren Sie bei Mauszeigerkontakt mit der Option „Fügen Sie Ihren individuellen Code hinzu (neues Snippet)“ und klicken Sie dann auf den Button „Snippet verwenden“, der erscheint.
Daraufhin wird eine neue Seite geöffnet, auf der Sie Ihr individuelles Snippet hinzufügen können. Geben Sie einen Titel ein, z. B. „Aktuelle Zeit mit Zeitzone anzeigen“, und fügen Sie dann das unten stehende Codeschnipsel in den Bereich „Codevorschau“ ein.
//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>";
}
Danach müssen Sie in der Dropdown-Liste „Code-Typ“ die Option „PHP Snippet“ auswählen, um sicherzustellen, dass der Code korrekt ausgeführt wird.
Abschließend sollten Sie den Schalter „Aktivieren“ auf „Ein“ stellen und auf den Button „Snippet speichern“ klicken, um Ihr neues Code-Snippet zu speichern.
Um diese Funktion aufzurufen, müssen Sie den folgenden Code an der Stelle in Ihr WordPress-Theme einfügen, an der Sie die aktuelle Zeit anzeigen möchten.
<?php wpb_show_timezone(); ?>
So sah es auf unserer Test-Website aus.
Was würde nun passieren, wenn der Code, der für die Ausführung dieser Funktion verantwortlich ist, verschwindet?
Der Aufruf der Funktion wird Ihre Website wie folgt unterbrechen.
Fügen wir eine Prüfung hinzu, die sicherstellt, dass dieser Code nur ausgeführt wird, wenn die Funktion existiert.
Auch hier müssen Sie den Code direkt in die Datei functions.php Ihres Themes einfügen oder ein Code-Snippet-Plugin wie WPCode verwenden (empfohlen):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
In diesem Code verwenden wir die Funktion function_exists()
. Diese Funktion prüft, ob eine Funktion existiert und gibt True oder False zurück.
Dann fügten wir eine if-else-Bedingung hinzu, um je nach Verfügbarkeit der Funktion entsprechende Maßnahmen zu ergreifen.
Wenn die Funktion nicht mehr verfügbar ist, wird sie vom Code einfach übersprungen, und WordPress kann den Rest Ihrer Website normal laden.
Wir hoffen, dass dieser Artikel Ihnen geholfen hat zu erfahren, wie Sie überprüfen können, ob eine Funktion in WordPress existiert. Vielleicht interessiert Sie auch unser kompletter WordPress-Leitfaden zur Fehlerbehebung oder unsere Expertenauswahl für die besten Drag-and-Drop-WordPress-Seitenerstellungsprogramme.
Wenn Ihnen dieser Artikel gefallen hat, dann abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Videotutorials. Sie können uns auch auf Twitter und Facebook finden.
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