WordPress プラグイン作成時のノウハウ – 中編 –
WordPress プラグイン作成時のノウハウ – 中編 – です。(諸事情により後編ではなく中編に…)
前回はこちら、
ではまず、wp-hatena のソースを見る前に、この世で一番簡単であろう hook を使うプラグインを書いてみます。 wp-hatena のほうは小技が少しはいっているため、ちょっと後回しにします。 🙂
ここでサンプルにするのは、驚愕の「投稿時間に “☆” を無意味に付けるプラグイン」。
以下がコードになります。
- <?php
- /*
- Plugin Name: Star Time
- Plugin URI: http://zone.maple4ever.net/blog/
- Description: 投稿時間に "☆" を無意味に付けるプラグイン
- Author: hiromasa
- Version: 1.0
- Author URI: http://zone.maple4ever.net/blog/
- */
- /****************************************************
- * WP の the_time hook に startime関数を追加します。
- ***************************************************/
- add_filter('the_time', 'startime');
- /****************************************************
- * startime 関数を定義します。
- ***************************************************/
- function startime($time) {
- $hosi = "☆";
- $newtime = $hosi . $time . $hosi;
- return $newtime;
- }
- ?>
実行結果はこんな感じです。
・・・。 まぁサンプルということでお許しを。 ☆の部分だけご確認下さい。
では気を取り直してソースを最初から見ていきましょう。 まずは先頭のコメント行です。
- <?php
- /*
- Plugin Name: Star Time
- Plugin URI: http://zone.maple4ever.net/blog/
- Description: 投稿時間に "☆" を無意味に付けるプラグイン
- Author: hiromasa
- Version: 1.0
- Author URI: http://zone.maple4ever.net/blog/
- */
たかがコメント、されどコメント。 実は WordPress はこのコメント形式を見てプラグインを認識します。ということでこの形式を壊さないように必要な情報を埋め込んでいます。このコメント行さえあれば、とりあえず WordPress のプラグインとしては成立するわけです。(有効化してもなんにも起きませんが…)
次は、”hook を 登録” する部分です。
- /****************************************************
- * WP の the_time hook に startime 関数を追加します。
- ***************************************************/
- add_filter('the_time', 'startime');
ここでは、”投稿時間” の改変をしたかったので the_time という hook を利用しています。 また、”したいこと”が書いてある関数名(startime)を add_filter で指定します。
そして、”したいこと” が書いてある関数(startime)の定義です。ちなみに関数名は別で使っていないものであればなんでもかまいません。(かぶらないような名前で…)
- /****************************************************
- * startime 関数を定義します。
- ***************************************************/
- function startime($time) {
- $hosi = "☆";
- $newtime = $hosi . $time . $hosi;
- return $newtime;
- }
function startime までは良いですが、その後の ($time) というのはなんでしょう? 実は WP の(フィルター)hook の多くは “現在までの処理結果” をこのように引数で渡してきます。 つまり、$time には投稿時間が入ってくることになります。($ではじまる変数の名前は適当につけて OK です)
ここでは投稿時間に☆をつけたいわけなので、$time を挟む形で☆をつけて・・・。
最後に、return $newtime; ということで WP に結果を返してあげます。ちなみに、この return をしなかった場合は、投稿時間が”からっぽ” になります。
たとえば、同じ the_time hook を使うプラグインがもう一個あった場合で優先順位がこのプラグインより低かった場合、次のプラグインの $time には “☆”付の投稿時間が渡されます。
「前編」で “数珠繋ぎ” といっていた実際の動きはこのあたりのことになるわけです。 おそらくこのプラグインの後ろにまわったプラグインは、投稿時間に☆なんかついてくることを想定していないので困ったことになるでしょう。。 こういうことを回避するため、このような後方に影響を与えそうなプラグインの場合は優先順位をありえないくらい後ろ(1000とか)に設定するというテクニックを使うことが多いです。
さて、このプラグインを導入すると、投稿時間が “☆投稿時間☆” となってサイトに表示されます。 the_time hook はサイト内の全ての投稿時間を表示されるときに呼び出されますので、このプラグインによってサイトは☆だらけの様相を呈してくるわけです。 🙂
ここまで読んでいると、WP から hook に登録した関数に “何が渡されてくるのか” という疑問が沸々とわいてくると思うのですが、この辺はドキュメントをみれば分かるようになっている…
ハズなのですが、結構まだ書いていない(TBD) 部分も多く、割と勘でやってみたり、他の方が作られたプラグインを参考にすることが多いです。 🙂
てなわけで、後編に続く…
[続き..]
From: PHPの勉強にWordPressのプラグインを作ってみる « Waviaei - 2006/5/20 Saturday (Pingback)
[…] 先ほどはアクション・フックを使ったので、今度はフィルター・フックを使ってみる。ひろまささんの、☆をつける「startime」と全く同じことをするとただ単にコピペしただけになるので、ちょっと違うのにしてみる。プラグイン名から察しがつくとは思いますが、アクティベートすると記事を大阪弁にしてくれるプラグインです。もちろん初めからそんな大掛かりなプラグインを目指すのではありません。シンプルに、記事中の「です。」を「やねん。」に変えます。もちろんデータベースにあるオリジナルの記事に手を加えるのではなく、動的にページを作成した際に「です。」を「やねん。」に変換します。 […]
From: 【自作Plugin】☆タイトル | WordPress入門記 - 2010/3/25 Thursday (Pingback)
[…] 以下のサイトば参考にさせてもろうたとよ。参考:http://zone.maple4ever.net/blog/archives/441/ This entry was posted in WordPress, プラグイン. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL. « ☆【自作Plugin】博多弁コンバーター☆ […]
From: プラグインの関数記述方法 - Doluck! - 2011/5/27 Friday (Pingback)
[…] 参考にさせていただいたのは hiromasa.zone さんの記事。 […]