Einer unserer technisch versierten Leser fragte uns kürzlich, wie man die Existenz einer PHP-Funktion überprüft, bevor man neuen Code in eine WordPress-Website integriert. Dies ist wichtig, um sicherzustellen, dass Ihre Website reibungslos läuft und Fehler vermieden werden.
Eine der Stärken von WordPress ist seine Flexibilität und das WPBeginner-Team fügt regelmäßig benutzerdefinierte Funktionen hinzu, um die Funktionalität unserer Website zu verbessern. Wir wissen, dass benutzerdefinierter PHP-Code fehlschlagen kann, wenn er eine Funktion aufruft, die nicht mehr existiert oder noch nicht definiert wurde.
In diesem Artikel zeigen wir Ihnen, wie Sie auf einfache Weise prüfen können, ob eine Funktion existiert, bevor Sie sie in Ihr WordPress-Theme einfügen, um so mögliche Fehler in Ihrem Code zu vermeiden.
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 interessieren Sie sich auch für unseren Leitfaden zur einfachen Anzeige von Code auf Ihrer WordPress-Website oder unsere Expertenauswahl der besten Code-Editoren für Mac und Windows zur Bearbeitung von WordPress-Dateien.
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