WordPressプラグインの開発 プログラミングについて
WordPressのプラグイン開発は基本的にPHPを使って開発を進めていきます。
僕は先日自作プラグインをWordPress.orgプラグインディレクトリで公開させていただきました。
実際開発してみて勝手がわからない為にフォルダ構成、組み方など最初に知っていたら設計段階で検討できたというノウハウを記事にしてみました。
ここでは、PHPの基本的な開発のノウハウより、WordPressのプラグインに特化した物を書いて行こうと思います。
フォルダ構成について
僕も最初はそれほど意識せずに作り始めてしまって、後々面倒だったのでワンポイントです。
フォルダ名とは、「/wp-content/plugins/******/ 」の*の部分の名称になる部分です。
WordPress.orgへ登録をお考えでない場合は、特に気にする必要はないと思います。
もし、登録をお考えでしたらフォルダ名は後々変更しやすいようにプログラムを設計されると良いと思います。
基本的に設計段階で組み込みを考えていくところだとは思いますが、僕は直接パスを書いてしまっていた箇所も混同してしまっていてWordPress.org へ登録時に慌てて修正しました。
わかっていればそれほど悩むことではないのでWordPress APIでプラグインの位置を必ず取得してそれをプログラム内で使うのがベストだと思います。
プログラムヘッダー
WordPressのプラグインは、コメントで記述したヘッダーが必要になります。
1 2 3 4 5 6 7 8 9 | <?php /* Plugin Name:TypePad emoji for TinyMCE Plugin URI: https://www.picmo.net/dl/ Description: This plug-in is done by will being able to use the pictograph of TypePad with TinyMCE. Version:1.2 Author: Tsubasa Author URI: https://www.picmo.net/ */ |
上記は僕の開発した、TypePad 絵文字 for TinyMCEのヘッダです。
プログラム開始からコメントを記述し、それぞれの項目が必要になります。
これがないとWordPress上でプラグインとして正常にプラグインリストなどに 表示されません。
Plugin Name | プラグインの名称を記述します。(日本語も使えます) |
---|---|
Plugin URI | プラグインの配布URLを記述します。 |
Description | プラグインの内容を記述します。(日本語も使えます) |
Version | プラグインのバージョンを記述します。 |
Author | プラグインの作者を記述します。(日本語も使えます) |
Author URI | URLを持っている場合記述します。 |
これだけ記述してあればプラグインとして認識します。
日本語の扱いは、使用は出来ますがもしプラグインディレクトリなどに登録する場合は極力英語で記述する方が良いと思います。
日本国内でのみの配布を考えて居るようでしたら問題無く使用してしまって良いと思います。
基本的な割り込みの方法
WordPressプラグインは、ベースで動いているWordPressに対して機能をアペンドすると思います。
管理画面なり、一般ページなりでプラグインをメインのWordPressのプログラムに対して割り込みします。
もちろん、処理の挿入についてはWordPress APIに既に存在しますのでそれを使えばだいたいの処理に割り込みをかけることが出来ると思います。
WordPress APIの使用方法については
WordPress codex
をご参照ください。
まずは、基本的な割り込みは
add_action および add_filter で行います。
これにより、WordPressのいろいろな場所に処理を割り込ませる事が可能です。
管理画面のメニューに項目を追加させたり、また管理画面に設定ページを作ったりすることもこの命令で割り込みをします。
僕のTypePad 絵文字 for TinyMCEを例にとってプログラムの流れをご説明します。
- プラグインロードアクションに割り込み
↓
初期設定およびバージョン変更時の処理など実行 - 管理画面 メニューアクションに割り込み
↓
管理画面のメニューに設定ページへの項目およびリンクを表示させる
呼び出された function から add_options_page をページの呼び出し function を定義することで呼び出されます。 - ページの呼び出し時に割り込み
↓
表示されるページが、固定ページ編集か記事編集のページが表示されたならTinyMCEに対する割り込みをする。
以上がTypePad 絵文字 で処理として実行される流れです。
基本的には、割り込みを指定してその割り込み内容を記述する。
これの繰り返しでプラグインを開発することが出来ます。
基本的にPHPさえ理解できればそれほど難しい事はないと思います。
それにしても、このWordPressの基本概念と設計をした人は本当に素晴らしい。
これだけの拡張性と自由度を残しながら、動作速度とソフトウェアクォリティーを維持できるというのは同じプログラマーとして尊敬します。
こうゆう設計思想を取り入れてソフト開発が出来れば後々の拡張や変更がとても楽に出来るので、ソフトウェアのクォリティーを維持出来る。
これまでにいろいろなソフトウェアを見てきましたが、これほどの可能性を感じられるソフトウェアはなかなか無いですね。
これからも素晴らしいソフトになっていくことを期待しつつ、僕もそんなお役に立てればと思います。
関連のありそうなエントリ