WordPressのプラグイン処理

WordPressプラグイン処理は結構分かりやすかったりする。

まず、プラグイン検出。
これは該当ディレクトリに対するファイルサーチ。
admin-functions.phpのget_pluginsから抜粋。

[php num=1]// Files in wp-content/plugins directory $plugins_dir = @ dir($plugin_root); if ($plugins_dir) { while *1 !== false) { if (preg_match('|^.+$|', $file)) continue; if (is_dir($plugin_root.'/'.$file)) { $plugins_subdir = @ dir($plugin_root.'/'.$file); if ($plugins_subdir) { while *2 !== false) { if (preg_match('|^.+$|', $subfile)) continue; if (preg_match('|.php$|', $subfile)) $plugin_files = "$file/$subfile"; } } } else { if (preg_match('|.php$|', $file)) $plugin_files = $file; } } }[/php]ここで抽出されたファイル群に対し、preg_matchによって、(コメントとして記述されている)プラグイン属性が抽出される(get_plugin_data)。

管理画面からの適用、不適用設定はDBに保持される。
また、各プラグイン内で実行されるadd_action により、タグ([アクション名称])と関連付けさせられ、適用の設定がなされたもののみ、do_action で実行される。

別途プラグイン処理を実装させる場合参考になるのかも。

*1:$file = $plugins_dir->read(

*2:$subfile = $plugins_subdir->read(