かくいう筆者も、WPテーマ開発に参画した当初は、仕様に合わせて実現方法を調べて、見つけた方法でコードをfunctions.phpにどんどん書き込んでいました。
時は流れて最近。WPにもう一歩踏み込んでみて、何でもかんでもfunctions.phpではなく、どんどんプラグイン化してしまうのもアリだな…?と感じるようになりました。
メリット
1.再利用が楽わかりやすいメリットはこれですね。
2.要/不要の切り替えが楽
個人の好みによるかとは思いますが、functions.phpの一部をコメントアウトしたり戻したりするよりスマートでは。
3.functions.phpより読み込みが先
個人的には目から鱗だったメリットはこれです。
以下、WP(※WordPress 5.1.1)のコアファイルに踏み込んだお話ですが。
wp-settings.phpの中で、
foreach ( wp_get_active_and_valid_plugins() as $plugin ) { wp_register_plugin_realpath( $plugin ); include_once( $plugin ); do_action( 'plugin_loaded', $plugin ); }
でプラグインを読み込む処理の方が、
foreach ( wp_get_active_and_valid_themes() as $theme ) { if ( file_exists( $theme . '/functions.php' ) ) { include $theme . '/functions.php'; } }
でテーマを読み込む処理より先に行われています。さらに言うと、プラグインを読み込む処理とテーマを読み込む処理の間には、
wp_functionality_constants();
なども挟まっているので、functions.phpではできない、一部の定数の定義が可能になったりするんです。
デメリット
1.テーマファイル群とプラグインファイル群に分かれる管理する範囲が、テーマファイル群1フォルダで済むところ、2フォルダ(以上)になったり。
2.有効化が必要
不要な時の無効化が楽な半面、管理画面(またはDB直接更新)で有効化が必須。
プラグインをつくってみる
今回は、「My Pluginという名前の」「固定のメッセージを返す関数を提供する」プラグインを作成し、テーマの中で使ってみましょう。1.プラグインを作成する
1.1.ファイル構成
お馴染み「Hello Dolly」プラグインがそうであるように、1ファイルだけでも成立しますが、現実的には、フォルダ(パッケージ)を用意してその中にプラグインを構成するファイル群を配置することになるでしょう。
今回は、my-pluginフォルダを用意し、その中にプラグインのメインになるmy-plugin.phpファイルを配置します。
my-plugin/
└my-plugin.php
1.2.ファイルヘッダー
テーマのstyle.cssにそのテーマの情報を書いたり、個々のページテンプレートファイルにそのテンプレートファイルの情報を書いたりするように、プラグインのメインになるファイルにはそのプラグインの情報を書きます。
my-plugin.php
<?php /* Plugin Name: My Plugin Description: 固定のメッセージを返す関数を提供するプラグイン */
最低限必要な情報
- Plugin Name(プラグインの名前)
次いで必要な情報
- Description(プラグインの説明)
その他
- Plugin URI
- Version
- Author
- Author URI
- License
- Text Domain
- Domain Path
1.3.プログラミング
functions.phpと書き方は同じです。PHPの記法に沿ってクラス定義やユーザー定義関数の作成などをします。
my-plugin.php
<?php /* Plugin Name: My Plugin Description: 固定のメッセージを返す関数を提供するプラグイン */ /** * 固定のメッセージを返す * * @return string メッセージ */ function get_my_plugin_message() { return 'This is My Plugin.'; }
2.プラグインを使う
2.1.ファイルアップロード
配布されているプラグインを手動インストールする場合、WPディレクトリ下のwp-content/pluginsフォルダにプラグイン用フォルダをアップロードしますね。
同じように、WPディレクトリ下のwp-content/pluginsフォルダにmy-pluginフォルダをアップロードします。
wp-content/
└plugins/
└my-plugin/
└my-plugin.php
2.2.有効化
配布されているプラグインのインストールが済んだら、管理画面から有効化しますね。
同じように、管理画面のプラグイン画面を開き、「My Plugin」の有効化をクリックします。
2.3.テーマの中で使ってみる
有効化されたプラグイン内のユーザー定義関数などは、functions.phpや個々のページテンプレートファイルで使用できます。
例えば以下のように。
index.php
<?php echo get_my_plugin_message(); ?>
以上、プラグインのつくり方でした。