こんにちは。ニタです。
前回、WordPressプラグインのリリース報告後、まともに開発する時間が取れなくて、プラグインの更新が出来ずにおります。
今回は、WordPressプラグインを開発する際の要点、ポイントをまとめてみます。
ディレクトリ、ファイル構成
プラグインは、WordPressのwp-content/plugins/内に格納されます。
プラグインファイルのみを格納するだけでも、WordPressは認識しますが、管理面も考慮して個別のディレクトリに格納しておくのが良いでしょう。
ディレクトリ名は、管理面も考慮して、プラグイン名と同じにするのが一般的です。
他のプラグインと重複しないよう予め調査するか、プレフィックスなどで唯一性を持たせるのもひとつの手です。
もし、開発したプラグインを、一般公開する場合、プラグイン名は特に考慮しておくべきでしょう。
また、プラグインのメインとなるファイル名(そのプラグインのメインとなる処理などが書かれたPHPファイル)は、プラグイン名にするのがWordPress界隈の慣例のようです。
ですが、ファイルの先頭に、プラグインの説明文をコメントアウトで記述していると、WordPressが勝手にメインとなるファイルとして判断するようです。
コメントアウトでプラグインの説明を記述
前述した、プラグインの説明文についてです。WordPressのプラグイン、テーマファイルは、コメントアウトでプラグインやテーマファイルの名称、バージョン、作者名、ライセンスなどを記述する必要があります。
/* Plugin Name: (プラグインの名前) Plugin URI: (プラグインの説明と更新を示すページの URI) Description: (プラグインの短い説明) Version: (プラグインのバージョン番号。例: 1.0) Author: (プラグイン作者の名前) Author URI: (プラグイン作者の URI) License: (ライセンス名の「スラッグ」 例: GPL2) */
特に、プラグインに関しては、このような説明がないと、いくらpluginsディレクトリに格納しても、管理画面のプラグインページで表示されず、プラグインの有効化ができません。
最低でも、プラグイン名「Plugin Name」の項目だけは記述する必要があります。
フックについて。アクションとフィルタ
プラグインを開発すると言いましても、ざっくり言いますと「WordPressのコアファイル群で走っている処理の間に、自作の処理を挟ませて、処理結果を変える。その処理を作る」のが、WordPressプラグインの主な仕事です。
その自作の処理を挟ませることを、WordPressではフック(hook)と呼びます。
フックは、アクションとフィルタに分けられます。
アクションは、投稿を追加した時、テーマを切り替えた時などに走ります。
add_action('publish_post','hoge');
上記の場合、publish_postというアクションをフックに、hogeというfunctionを実行させています。
publish_postアクションは、投稿が公開された時のアクションですので、投稿が公開されたタイミングで、管理者にメールを送信する、ということも可能です。
フィルタは、WordPressのデータベースからデータをブラウザへ表示させる際、ブラウザからのデータをデータベースへ追加するタイミングなどに通る関数を指します。
僕が開発したプラグイン「Rucy」では、以下の様な使い方をしています。
add_filter('post_updated_messages','addRcMessage');
コアファイル群がpost_updated_messagesという、投稿内容を追加・更新した際に編集画面にメッセージを表示する関数に、addRcMessageという自作の関数を通しています。
addRcMessageでは、予約更新日時に関するメッセージを追加させています。
その結果、編集画面では、以下の様なメッセージが表示されるようになります。
アクションとフィルタの一覧はWordPress公式のWikiに掲載されていますので、参考にしてみてください。
プラグインのインストール、アンインストール時のフック
プラグインを、管理画面で有効にした際、プラグイン独自の設定項目などをデータベースに登録したい場合があると思います。
その場合、以下のコードによってプラグインを有効にした際に、関数fugaが実行されます。
// fugaという独自関数を有効化時にフックさせる。 register_activation_hook( __FILE__, 'fuga' );
同様に、アンインストール、無効にした場合に実行させたい処理は以下のようにフックします。
// goodbyeRucyという独自関数をアンインストール時にフックさせる。 register_uninstall_hook(__FILE__, 'goodbyeRucy');
「Rucy」によってデータベースに追加された、予約更新内容や、設定内容を削除しています。
飛ぶ鳥跡を濁さずと言いますか、データベースなどに残したデータによって、アンインストール後のシステムに影響を与えないようにしています。
ざっと書きましたので、まとめますと、
- プラグインはディレクトリ名、ファイル名は合わせる。
- プラグイン名は唯一性を持たせる。
- ファイルの先頭に、プラグインの説明文をコメントアウトで記述する。
- プラグイン開発の基本はアクションとフィルターのフックを活用する。
こんな感じでしょうか。
このエントリーが、皆様のプラグイン開発の一助になれれば幸いです。
Enjoy, WordPressLife!