Aufruf zu undefinierter function `get_plugin_data ()`

Ich habe eine class in einer Datei, die ich include_once() aus der functions.php meines Themas. Die class kann als eigenständiges Plugin verwendet oder in ein Thema integriert werden.

Innerhalb der class möchte ich eine classnvariable (innerhalb der function __construct() ) mit der nativen WordPress-function get_plugin_data() . Spaß wie es ist, bekomme ich den folgenden Fehler:

Aufruf zu undefinierter function get_plugin_data()

Frage ich zu spät nach den Plugin-Daten oder was könnte mein Problem sein?

Vielen Dank!

Solutions Collecting From Web of "Aufruf zu undefinierter function `get_plugin_data ()`"

get_plugin_data () ist nur im Administrationsbereich definiert. Welche Informationen musst du aus der Kopfzeile des Plugins erhalten, die du im Theme anzeigen musst? Wenn die Antwort keine ist, würde ich vorschlagen, dass Sie einen bedingten Aufruf in Ihrem Konstruktor platzieren. Etwas wie:

 if ( is_admin() ) { $var = get_plugin_data(); } 

Sie fragen sich vielleicht, gibt es eine andere Möglichkeit, das zu lösen? Zumindest habe ich das gemacht, weil die gelostete Lösung @mfields bei mir nicht funktioniert hat.

Nach dem core code graben habe ich eine ziemlich nützliche corehelferfunktion gefunden, die uns helfen wird, ungefähr dasselbe Ergebnis zu erzielen. Ich spreche von der function get_file_data() .

Als erstes Argument benötigen wir eine Zeichenfolge des absoluten Pfades zu Ihrer Haupt-Plugin-Datei. Das zweite Argument ist ein Array der Header, die Sie abrufen möchten. Überprüfen Sie das Array unten für alle Header.

 $default_headers = array( 'Name' => 'Plugin Name', 'PluginURI' => 'Plugin URI', 'Version' => 'Version', 'Description' => 'Description', 'Author' => 'Author', 'AuthorURI' => 'Author URI', 'TextDomain' => 'Text Domain', 'DomainPath' => 'Domain Path', 'Network' => 'Network', // Site Wide Only is deprecated in favor of Network. '_sitewide' => 'Site Wide Only', ); 

Das dritte Argument wird “plugin” sein, sag mir nicht, warum es ohne drittes Argument auch so funktioniert.

Jedenfalls benutze ich das jetzt (es befindet sich in der Haupt-Plugin-Datei).

 $plugin_data = get_file_data(__FILE__, [ 'Version' => 'Version', 'TextDomain' => 'Text Domain' ], 'plugin'); 

Wenn Sie die get_plugin_data im Frontend verwenden müssen, können Sie diesen Code vor dem Aufruf der function hinzufügen:

 if( !function_exists('get_plugin_data') ){ require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); }