WordPress: Prüfen, ob Plugin installiert ist (ACF)

Lesezeit: 2 Minuten

Joes Benutzeravatar
Jo

Ich möchte verhindern fatal error in meinem Theme, wenn das ACF-Plugin deaktiviert oder nicht installiert ist.

Die Hauptfunktion des Plugins ist get_field(). Ich habe diesen Code in meine geschrieben functions.php überprüfen:

if ( !function_exists('get_field') ) {
  function get_field() {
    echo '<span>plugin ACF is not installed</span>';
  }
}

Bitte sagen Sie mir, dass dies eine akzeptable Praxis ist?

ACF selbst überprüft, ob das Framework geladen wurde. Wenn es bereits von einem anderen Plugin oder Design eingebunden und aufgerufen wurde, instanziiert ACF seine eigene Klasse nicht erneut. Dies geschieht mit einer Klassenprüfung:

if (!class_exists('ACF')) {
    //  The ACF class doesn't exist, so you can probably redefine your functions here
}

Ich verwende genau dies in meinen eigenen Plugins, die auf das Vorhandensein von ACF angewiesen sind, damit bei einer Deaktivierung nicht die gesamte Site ausfällt.

Zunächst einmal ist dies nicht die Hauptfunktion des Plugins, sondern nur eine davon. Wahrscheinlich am häufigsten von einem Plugin-Benutzer in einem Thema verwendet. Ein anderer ist the_field()die tatsächlich den Wert ausgibt (get_field() gibt es zurück).

In Bezug auf die Übung zum Definieren Ihrer benutzerdefinierten Funktion – es ist in Ordnung. Ich würde diese lange Nachricht jedoch nicht an jeder Stelle drucken, an der ein ACF-Feld erwartet wird – einige davon können kurz sein (Zahlen), und diese Nachricht wird das Layout stören. Etwas kürzer drucken ist besser, imo.

Ebenfalls, function_exists ist richtige Prüfung, nicht is_plugin_activeda ACF auch als Bibliothek mit einem Theme-Framework oder einem anderen Plugin ausgeliefert werden kann.

Eine andere Möglichkeit besteht darin, die ACF-Abhängigkeit vom Frontend vollständig zu entfernen. Mit können Sie den Inhalt der Felder ausgeben get_post_meta() und verhindern, dass das ACF-Plugin vollständig auf das Frontend geladen wird. Einzelheiten finden Sie in diesen beiden Beiträgen:

http://www.billerickson.net/code/disable-acf-frontend/

http://www.billerickson.net/advanced-custom-fields-frontend-dependency/

  • Es ist wirklich abgefahren! Alleine wäre ich nie auf die Idee gekommen. Jetzt werde ich den Code in etwas besserer Qualität schreiben. Vielen Dank für Ihre Erfahrung!

    – Jo

    15. November 2016 um 23:12 Uhr

Benutzeravatar von Tobi G
Zu groß.

Dafür gibt es eine WordPress-Funktion:

is_plugin_active('advanced-custom-fields/acf.php');

Hinweis: Beim Wechsel zur Premium-Version eines Plugins können Probleme auftreten.

Ja, es ist eine gute Möglichkeit zu überprüfen, ob die Plugin-Funktion vorhanden ist.

Sie können es auch versuchen is_plugin_active Funktion, um zu prüfen, ob das Plugin aktiviert ist, da die Funktion irgendwo neu deklariert werden kann.

Ich denke, der Hauptgrund, warum Sie das tun, ist, schwerwiegende Fehler zu verhindern, also spielt es keine Rolle, wie Sie es verwenden können.

1395200cookie-checkWordPress: Prüfen, ob Plugin installiert ist (ACF)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy