WordPress プラグイン作成時のノウハウ – 前編 –
WordPress プラグイン作成のノウハウなんかを書いてみます。 偉そうなタイトルのわりにはたいしたこと無いので暇つぶしにどうぞ。 🙂
ちょうど短めでサンプルに丁度良いプラグイン、「WordPress エントリをはてなブックマークに登録 – wp-hatena プラグイン –」のソースを元に説明してみたいと思います。 また、kohaku さんより “del.icio.us 対応” のご要望もいただいておりましたので、このエントリでプログラムの説明といっしょに対応してみたいと思います。 🙂
なおなお、説明中にはぼくが便宜上 “勝手に作った言葉” が多数存在します。正式な呼び名については各ドキュメントをご参照下さい。
では、最初に WordPress プラグインの動作を書いてみます。
- 有効化されたプラグインは WP の初期化の段階で .php ファイルが読み込まれ実行される
- 通常、プラグインは初期化の段階で動いても何も出来ないので、この時点では WP に対して “hook の登録”、”関数の定義” だけを行い WP に処理を戻す
- 初期化が終わり動き出した WP は、適切な時期に “登録 hook の呼び出し”、
またテーマ等に書いてあった “関数の呼び出し” を行いつつ処理を進める - プラグインは WP から呼ばれたら適切に動作をして WP に処理を戻す
- プラグインの存在分くりかえし..
と、このような感じです。ポイントとなるのは、”hook の登録” の部分です。この WP の機能により、プラグインを有効にしただけでサイトの画面やデータベースの内容を追加したり修正したりできます。
イメージがわきにくいと思いますが、ドキュメントをみるとすぐ
分かります。
ページ中盤から、admin_footer やら comment_post やら、the_content やら the_title といった名称の羅列があると思います。これが WP に用意された hook になります。
プラグインはこの hook に対して機能を “追加定義” します。hook 名称を見れば一発で理解できます。
- admin_footer であれば “管理画面のフッター出力時”
- comment_post であれば “コメントが投稿された時”
- the_content であれば “コンテンツ(エントリ)を出力する時”
- the_title であれば “タイトル(エントリ名)を出力する時”
などなど自分が “働きたい場所” (hook)に、”動くときはついでにおれ(作ったプラグイン)を呼んでくれ” と定義するのがプラグインの”hook の登録” です。
hook には大きく、”データベース登録データを処理する” ものと”データはいじらずに画面上処理するもの” の二つがありますがここではとりあえず違いについての説明は省略します。
さて、この WP の hook ロジックにプラグインを登録するには WP で用意されている次の関数(Plug-in API)を使います。
add_action(‘hook_name’, ‘[関数名]’, [優先順位]);
add_filter(‘hook_name’, ‘[関数名]’, [優先順位]);
有効化しただけでなにかしらの変化が起きるプラグインは必ずこの2つの関数どちらかがあります。関数が2種類あるのは上で書きました、”データベース登録データを処理する” ものと”データはいじらずに画面上処理するもの”の差です。
引数にある [関数名] がプラグインのファイルのどこかに
定義されている function [関数名]() { で始まるブロック(関数)で、そのプラグインの動作の実体がかかれています。
誤解を恐れず言ってしまえば、プラグインを解析するときは、
- まずは、”add_” でプラグインファイルを検索
- hook の名前を見て “何のとき” に動くのかを確認
- [関数名]を確認
- “function [関数名]” で検索し、そこからプログラムを追う
ということになります。つかみさえ分かれば、あとは .php が分からなくてもきっと感覚でわかるでしょう。 🙂
別件、Plug-in API の引数に[優先順位] というのがあります。これは、hook の動く順を決めるパラメータです。プラグインは沢山ありますので当然同じ hook に複数のプラグインが登録されることは結構あります。また、WP 本体もこの hook ロジックで動いている部分があります。このようなときプラグインは同時に動かずに数珠つなぎに呼び出されていきます。この数珠の順番を明示的に指定するのが [優先順位] です。この数字が少ない方が先に動くようになります。省略時は、10 という値になり10 の中でプラグインは WP による登録順(つまり不定)で動くことになります。
もし、同じ hook をつかうプラグイン間で競合を起こした場合はこのパラメータを使って順番を変えるとうまくいくかもしれません。
さて、ここまでが hook を使うプラグインの説明でした。プラグイン的にはこちらが王道なわけですが、やりたいことによっては良い hook が無いかもしれません。また、画面を扱うプラグインではユーザが好きな位置になにかを挿入したがっているかもしれません。
そのようなときは、hook の登録をせずにやりたいことを書いた “関数”だけプラグインに書いておいて、使う人に、自分でテーマの中にその関数を呼び出すコードを書いてもらうという手があります。
今回のサンプルである「WordPress エントリをはてなブックマークに登録 – wp-hatena プラグイン -」は、”hook の登録” と “ユーザ用関数の登録” の両方をもつプラグインです。
後編では、実際のコードを使ってどのようにやるのかを説明したいと思います。あと、プラグインを書きやすくする小技がいくつかありますので、こちらも紹介。
おたのしみに…(←実は全部一度に書く時間が無くなった 🙂
29 Comments
Trackback
Comment
-
From: chameleon - 2005/11/12 Saturday (Comment)
後編、楽しみにしています。
「del.icio.us」対応、僕も一票です。:razz:
-
From: ひろまさ - 2005/11/12 Saturday (Comment)
どうもありがとうございます。:mrgreen:
chameleon さんの、 PHP Highligh String を駆使してただいま執筆(??)中です!
>「del.icio.us」対応、僕も一票です。 😛
了解です、やります!
-
From: ひろまさ - 2005/11/15 Tuesday (Comment)
tai さん、こんにちは!。
実は密かに tai さんのブログ購読させていただいておりました。
翻訳ドキュメントもいつも読ませて頂いています。
トラックバック & リンクどうもありがとうございました。
WordPress FAQ に入れて頂けるとは・・・光栄です。
今後ともよろしくお願いいたします。:eek:
-
From: chameleon - 2005/11/12 Saturday (Comment)
後編、楽しみにしています。
「del.icio.us」対応、僕も一票です。:razz: -
From: ひろまさ - 2005/11/12 Saturday (Comment)
どうもありがとうございます。:mrgreen:
chameleon さんの、 PHP Highligh String を駆使してただいま執筆(??)中です!>「del.icio.us」対応、僕も一票です。 😛
了解です、やります!
-
From: ひろまさ - 2005/11/15 Tuesday (Comment)
tai さん、こんにちは!。
実は密かに tai さんのブログ購読させていただいておりました。
翻訳ドキュメントもいつも読ませて頂いています。トラックバック & リンクどうもありがとうございました。
WordPress FAQ に入れて頂けるとは・・・光栄です。今後ともよろしくお願いいたします。:eek:
From: PukiWiki/TrackBack 0.2 - 2005/11/15 Tuesday (Trackback)
WordPress FAQ
WordPressの掲示板等でよくある質問と答えをまとめました。リンク先のほとんどは掲示板での回答や他のWordPressユーザの投稿記事です。 回答者や投稿者の皆さんに多謝! 文字化けする テーマ関連 プラグイン関連 簡単に入力したい 文字化けする † デ…
[続きを読む]
From: PHPの勉強にWordPressのプラグインを作ってみる « Waviaei - 2006/5/20 Saturday (Pingback)
[…] hiromasa.zone ) ≫ WordPress プラグイン作成時のノウハウ – 前編 – […]
From: Hangil’s Blog » Blog Archive » hiromasa.zone :o) ≫ WordPress プラグイン作成時のノウハウ - 前編 - - 2007/2/3 Saturday (Pingback)
[…] WordPress のプラグイン作成法の秀逸な解説を発見。 WordPress プラグイン作成時のノウハウ […]
From: useful site for making wp plugin at [m.l.k.c : v.5] - 2007/3/21 Wednesday (Pingback)
[…] hiromasa.zone :o) ≫ WordPress プラグイン作成時のノウハウ – 前編 – […]
From: WordPressのプラグインを改造 - ウェブと猿とプログラミング - 2008/5/25 Sunday (Pingback)
[…] 参考にしたのはWordPress プラグイン作成時のノウハウ 前編と、WordPress CodexのWriting a Plugin(英語)です。 […]
From: プログラム » Blog Archive » WordPressのプラグイン作成(1) - 2008/10/12 Sunday (Pingback)
[…] WordPress プラグイン作成時のノウハウ http://zone.maple4ever.net/blog/archives/440/ […]
From: インタラクティブCG開発チーム | - 2008/10/21 Tuesday (Pingback)
[…] WordPress プラグイン作成時のノウハウ […]
From: links for 2009-01-18 « Web、プログラミングの技術など - gentenzero blog - 2009/1/19 Monday (Pingback)
[…] hiromasa.zone :o) » WordPress プラグイン作成時のノウハウ – 前編 – エントリをソーシャルブックマークへ登録するプラグインの作成チュートリアル。 これを読めばある程度の WordPress プラグイン制作の流れがつかめます。 (tags: wordpress plugin) […]
From: NetBeans で WordPress をいぢる、プラグイン作成編 - わーどぷれすっ! - 2009/2/11 Wednesday (Pingback)
[…] hiromasa.zone ) » WordPress プラグイン作成時のノウハウ […]
From: WordPressに関する気になる記事いろいろ | Take It Crazzzy! - 2009/3/3 Tuesday (Pingback)
[…] WordPressプラグイン作成時のノウハウ -前編-|hiromasa.zone :o) 前編、中編、後編+αあります。 […]
From: 儚くも平穏な日々達 » 調べてみた - 2009/4/17 Friday (Pingback)
[…] ひとつふたつ読んでみる。 読んだのはこちら。 「WordPressプラグイン作りの基本とhook」 「WordPress プラグイン作成時のノウハウ」 […]
From: oganosin blog - 初めてのwordpress plugin その1 - 2009/5/1 Friday (Pingback)
[…] http://zone.maple4ever.net/blog/archives/440/ このサイト。 […]
From: Risperdal. - 2009/5/21 Thursday (Trackback)
Risperdal dementia….
Risperdal. Risperdal ntab….
[続きを読む]
From: SmallBusiness Blog » Wordpressのプラグインを自作する - 2009/5/21 Thursday (Pingback)
[…] WordPress プラグイン作成時のノウハウ – 前編 http://zone.maple4ever.net/blog/archives/440/ […]
From: あり » Blog Archive » WordPressプラグインの作成 - 2009/6/26 Friday (Pingback)
[…] WordPress プラグイン作成時のノウハウ – 前編にわかりやすいように記事がありましたので、それにならって作成したいと思います。 […]
From: あり » Blog Archive » WordPressプラグインの作成(2) - 2009/6/27 Saturday (Pingback)
[…] WordPress プラグイン作成時のノウハウ – 前編にわかりやすいように記事がありましたので、それにならって作成したいと思います。 […]
From: wpのプラグイン開発 « 青森県デリヘル検索 - 2010/1/14 Thursday (Pingback)
[…] WordPress プラグイン作成時のノウハウ – 前編 […]
From: Atlanta zyprexa attorneys. - 2010/2/11 Thursday (Trackback)
Zyprexa….
Connecticut zyprexa attorneys. Denver zyprexa lawyer. Wyoming zyprexa lawyer. Zyprexa. Drug zyprexa. Zyprexa injury lawyer columbus….
[続きを読む]
From: オンポタメモ » links for 2010-02-13 - 2010/2/14 Sunday (Pingback)
[…] hiromasa.zone :o) » WordPress プラグイン作成時のノウハウ – 前編 – (tags: wordpress+Plugin teck) Written by onpota in: ブックマーク | […]
From: 不要な画面を表示させないWordPressプラグインを作成しました | 京都のホームページ制作会社 クラブエナー - 2010/3/29 Monday (Pingback)
[…] 以下のサイトを参考にして制作しました。ありがとうございました! WordPress プラグイン作成時のノウハウ WordPressの管理画面に、オリジナルのメニューを表示する方法 […]
From: Bookmarks of This Week (5/30-6/6) - Sometime PHP - 2010/6/6 Sunday (Pingback)
[…] hiromasa.zone ) » WordPress プラグイン作成時のノウハウ – 前編 – […]
From: WordPressを使いたい人が最初に読むべき記事厳選7 | WordPress【ワードプレス】初心者の部屋~使い方知っとこ? - 2010/9/15 Wednesday (Pingback)
[…] お勧めします。 全三部作構成 hiromasa.zone ) » WordPress プラグイン作成時のノウハウ – 前編 – […]
From: 「ふぉしむ」のブログ » WordPressで、フォームからPOSTで送られたデータを使い動的ページを表示 - 2011/2/22 Tuesday (Pingback)
[…] あと、PHPが全然わからなくてWordPressのプラグインに無知な僕にも、わかりやすくプラグインの説明をしてくれたサイトが↓のページです。 WordPress プラグイン作成時のノウハウ […]
From: Wordpressの「フック」とは | 海外起業を志すWeb系Developerの夢ノート - 2011/5/20 Friday (Pingback)
[…] こちらにフックの仕組みについては分かりやすく書いてあったので、詳しく知りたい方は是非。 […]
From: リビジョンを作らないようにするWordPressプラグインを作る | i-soft 開発日記 - 2012/7/25 Wednesday (Pingback)
[…] hiromasa.zone :o) 様の 「WordPress プラグイン作成時のノウハウ」 […]
From: [WordPress] プラグインを作ろう(1) 参考サイトを探そう | umbrella_process blog - 2015/1/4 Sunday (Pingback)
[…] WordPress プラグイン作成時のノウハウ – 前編 – 日本語の情報の中では分かりやすそう […]