webdevqa.jp.net

プラグインのバージョン番号を動的に取得したい

ハウディ、私は最近W3TCを「更新中」のチェンジリスト表示(非常にかっこいい)を 私のプラグイン に実装するように仕掛けましたが、避けるのが厄介なコードもあります。

このファイル の先頭を見ると、次のコードが表示されます。

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

イック:P

それは最新に保たれる必要がある、それで機能はあなたのプラグインと現在の安定版の間で変化することができる。

私はCodexを熟読しましたが、見つけることができませんでしたが、プラグインのバージョンを取得するためのAPI関数である _ got _ があります。

何か手がかりはありますか?

9
Chris Marshall

ここにあなたがそれにしたいことをするであろういくつかのコードでの答えがあります: それ自身のバージョン番号を得るためのプラグインのための方法はありますか?

3
Matthew Muro

get_plugin_data() という関数があります。次のことが必要な場合は、メインプラグインファイル内からこれを呼び出してください。

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

しかし、他の質問への答えで述べられているように、あなたがしているように単にPHP変数を定義することはパフォーマンスのためにより良いです。

13
goldenapples

get_plugin_data()の代わりに get_file_data() があります。これは追加のファイルをロードするというオーバーヘッドなしに利用可能です。

これをメインのプラグインファイルに追加するだけです。

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

内部でget_file_dataはかなり高性能なものになるようにいくつかの包丁スキャンをします。

そして必要ならばあなたの定数を定義します。

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

考えられる解決策の1つは、正規表現です。

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

この正規表現はget_file_data()より少し速いということに言及しなければなりませんが、一般的にあなたはそれに気付かないでしょう。