Es kann nicht überprüft werden, ob das Plugin aktiv ist

9

Ich arbeite mit ACF an einem benutzerdefinierten Thema. Ich möchte überprüfen, ob das Plugin aktiv ist oder nicht. Ich benutze diesen Code:

<?php include_once( ABSPATH . 'wp-content/plugins/advanced-custom-fields-pro/acf.php' ); 
if ( is_plugin_active( 'advanced-custom-fields-pro/acf.php' ) ) {

echo "hi";

} ?>

Ich erhalte jedoch den folgenden Fehler:

Schwerwiegender Fehler: Aufruf der undefinierten Funktion is_plugin_active () in /Users/johann/htdocs/clarity_v21/wp-content/themes/clarity/templates/header.php in Zeile 21

Irgendwelche Ideen, was falsch sein könnte?


Basierend auf der bereitgestellten Antwort habe ich versucht:

if( class_exists('acf') ) { 

  if (($header_style)=='style2') {

}

und es hat funktioniert! Die Lösung besteht also im Grunde darin, zu versuchen, eine Klasse zu finden, die mit dem Plugin zusammenhängt, das Sie überprüfen möchten. In diesem Fall ist die Klasse "acf" spezifisch für das Plugin "Erweiterte benutzerdefinierte Felder" und erlaubte mir, die Bedingung nur auszuführen, wenn das Plugin aktiv war.

Johann
quelle
1
Ich würde dringend empfehlen, keine Plugin-Datei aus einem solchen Thema aufzunehmen. Diese Funktion ist auch nur im Admin-Bereich verfügbar
Tom J Nowell

Antworten:

17

Versuchen Sie, class_exists zu überprüfen :

<?php 
     if( class_exists('acf') ) {
        echo "hi";
     }
?>
Behzad
quelle
Dies war die Lösung für mein Problem. Überprüfen Sie die aktualisierte Frage.
Johann
7

is_plugin_active()Nur im Admin-Bereich verfügbar. Sie müssen die Kerndatei plugin.phpin das Front-End aufnehmen, um diese Funktion nutzen zu können.

Aus der WordPress- Dokumentation

HINWEIS: In wp-admin / includes / plugin.php definiert, ist dies nur auf den Admin-Seiten verfügbar. Alle Verweise auf diese Funktion müssen mit admin_init oder einer späteren Aktion verknüpft sein. Wenn Sie diese Funktion in einer Vorlage verwenden möchten, müssen Sie die Datei plugin.php manuell anfordern. Ein Beispiel finden Sie unten.

So wird es sein

<?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); 
if ( is_plugin_active( 'advanced-custom-fields-pro/acf.php' ) ) {
    echo "hi";
} ?>
Sumit
quelle