web-dev-qa-db-ja.com

ローカルファイルからすべてのプラグインとそのバージョン番号を取得する方法

私は現在サーバー上で実行されているスクリプトを書いていて、a)WordPressのバージョンb)プラグインc)プラグインのバージョンに関する情報を得ることになっています。

WordPressのバージョン番号は問題ありませんが、必要なプラグイン情報を確実に取得する方法がわかりません。私はプラグインフォルダを見つけました(wp-content/plugins)。このフォルダにはすべてのプラグインが含まれていますか?

たとえそうだとしても、a)正式名b)すべてのプラグインの正式バージョン番号を取得するための固定構造があるかどうかはわかりません。

例えば、私がチェックしたプラグインの1つは、@ versionアノテーション付きの.phpファイルのバージョン番号を持っていましたが、私がチェックした2番目のプラグインのバージョンは、コメントの一部にすぎません(Version = 2.66またはこれに似たもの)。

PHPを使用せずにこの情報を取得する信頼できる方法はありますか(私が書いているスクリプトはWordPressに限定されず、PHPなしのサーバーで実行する必要があるため)。一般的な構造のようなもの、あるいはプラグインに関する情報を集めた中央のファイルのようなものですか?

1
R.G.

悪いニュースWPはこの情報を持続的に追跡しません。それはそれらをロードするためにアクティブなプラグインの技術的表現を保持するだけです。それ以外の部分は特定のコンテキスト(プラグイン管理管理パネルなど)でのみ検索されます。リソースが比較的重いためです。

良いニュースはあなたが確かに任意のプログラムでこの機能を再構築できることです。 WPプラグインの正規版は、そのファイルの ファイルヘッダー にPHP commentの形式で含まれています。残念ながら、それはあまりにもマシンフレンドリーなフォーマットではありません。

いくつかの問題を念頭に置いて、スクリプトにヘッダーをスキャンさせることができます。

  1. バージョンは必須ではなく、完全に欠落している可能性があります。
  2. プラグインフォルダはデフォルトの場所にある場合とそうでない場合があります(カスタマイズ可能)。
  3. プラグインは、サブフォルダ内にあってもなくてもかまいません(それらは直接pluginsフォルダにあってもかまいません)。
  4. 単一のサブフォルダーに複数のプラグインがある場合があります。
1
Rarst

あなたはWordPressがそれをどのようにしているかについて見るためにソースを調べることができます。 get_plugins で始まり、 get_plugin_data で始まります ヘッダを読むためのget_file_data

1
Milo