web-dev-qa-db-de.com

Ich möchte dynamisch eine Plugin-Versionsnummer erhalten

Grüß Gott, ich habe kürzlich W3TC geschrubbt, um eine Anzeige der Änderungsliste "in Aktualisierung" (sehr cool) in meinem Plugin zu implementieren.

Wenn Sie oben in dieser Datei nachsehen, wird der folgende Code angezeigt:

define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // This needs to be kept in synch with the version above.

Ick. : P

Das muss auf dem neuesten Stand gehalten werden, damit die Funktion zwischen Ihrem Plug-in und der aktuellen stabilen Version abweichen kann.

Ich habe den Codex durchgesehen und kann ihn nicht finden, aber es mussGOTeine API-Funktion zum Abrufen der Version eines Plugins geben.

Irgendwelche Hinweise?

9
Chris Marshall

Hier ist eine Antwort mit einem Code, der genau das tut, was Sie möchten: Gibt es eine Möglichkeit für ein Plug-In, eine eigene Versionsnummer zu erhalten?

3
Matthew Muro

Es gibt eine Funktion namens get_plugin_data () . Versuchen Sie, dies aus der Haupt-Plugin-Datei heraus aufzurufen, wenn Sie:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];

Aber wie in den Antworten auf die andere Frage gesagt, ist es für die Leistung besser, einfach eine PHP -Variable zu definieren, wie Sie dies tun.

13
goldenapples

Eine Alternative zu get_plugin_data() ist get_file_data () , das verfügbar ist, ohne dass zusätzliche Dateien geladen werden müssen.

Fügen Sie dies einfach zu Ihrer Haupt-Plugin-Datei hinzu:

$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];

Unter der Haube macht get_file_data einige Hackmesser-Scans, um ziemlich performant zu sein.

Und definieren Sie bei Bedarf Ihre Konstante:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );
8
paulcol.

Eine mögliche Lösung kann Regex sein:

$plugin_version = NULL;
if(preg_match('/\*[\s\t]+?version:[\s\t]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];

Ich muss erwähnen, dass dieser reguläre Ausdruck etwas schneller ist als get_file_data(), aber im Allgemeinen werden Sie es nicht bemerken.