なんだかリリースお知らせばっかりですが(笑)、wp-kotodama と wp-kyodeki を JSeries のほうにリリースしましたのでお知らせします。 いわゆる Recent Comments と、Todays Popular を表示する WordPress 用ウィジェットプラグイン2種類です 🙂
kotodama は旧 widget、kyodeki は新 widget の仕組みをつかっていますので、ソースが気になる方はみてみてください。 せっかくなのでここで新ウイジェットの仕組みとかも書いてみます。
WordPress Plugins/JSeries » wp-kotodama (投稿コメント表示ウイジェット)
サイドバーなどに、最近投稿されたコメント者名とその親記事へのリンクを出力するウィジェットです。
WordPress Plugins/JSeries » wp-kyodeki (本日人気の記事表示ウィジェット)
サイドバーなどに、本日人気の記事表示の一覧とそのアクセス回数を表示するウィジェットです。
wp-kyodeki で既に .another リリース版をおつかいの方は、上書きしていただければと思います。 パスワード付き投稿も集計対象にしていたのを修正しています。
wp-kotodama のほうは修正ありませんのでそのままでOKです。
なお両方ともウイジェットといいつつテンプレートタグでも動作できます。
kotodama_get_comments($limit = 7, $gravatar = false, $size = 18)
the_kyodeki($count)
それぞれ関数定義はこんなかんじなので、<?php kotodama_get_comment(); ?> とか <?php the_kyodeki(); ?> とかをテーマ内にかいてあげれば、ウィジェットないテーマでも使えます。 引数はのりでかいてください。 🙂
さて、WordPress の Widget システムですがご存じのように 2.8 からつくりかたが変わっています。 ホントは古いつくりかたの kotodama のほうを新しくかきなおそうかとおもったのですが、コアの新旧変換ロジックもおもしろいのでそのままにしました。
新と旧ウィジェットシステムの大きな違いは、マルチウィジェットのかきやすさです。
kotodama はどこかひとつ配置したらもう配置できません。 kyodeki ではいくつでも配置できるのが分かると思います。 また同一ウィジェットで、配置によって異なる各設定も別に保持できます。
旧ウィジェットシステムではマルチしたい場合は、自分のプログラムでマルチになることを意識してかかなければならずで結構大変だったのですが(kotodama はしていません)、新ウィジェットシステムでかくと何もせずともマルチの制御をシステムでやってくれるようになっています。
ちらっと仕組みを書くと、新ウィジェットシステムは、クラスの継承を行う形で処理をかくのがキモです。 extends WP_Wiget ってやつです。
クラスの継承というのがよくわからない方は、コアにある WP_Wiget の中身(結構長いぜ)を全部コピペして自分のソースにはりつけたと思ってください。 コピペはあんまりなので extends ってかくだけでOKなようになってると思ってもらえれば、とりあえずは正解です(笑)
WP_Wiget にはウイジェット状態維持(配置場所やオプション)、その他管理画面の入出力が便利なようにする処理がはいっていて、自分がしたい処理の部分だけ書き換(オーバーライド)すると簡単に WordPress のウィジェットとして成立するようになっています。
で、ここからはクラスの妙。 クラスは定義するだけでは動作はせず、インスタンスというものをつくる必要があります。 これは言葉がめんどくさいだけで、実質的には構文で「new クラス名」ってかくだけなのですが、これをやってくれているのは今回から WordPress のコアです。
インスタンスはひとつのクラスの定義から複数作成することができます。 振る舞い(メソッド)は同じだけど、値が違う・・・。 まさにマルチウィジェットです。 必要時に必要な数だけ WordPress が該当ウィジェットを new してくれるので、こっちは考えなくてもマルチになってくれるという寸法です。
うーん、オブジェクト指向でよくある「車クラスを継承してカローラクラス」をつくります。 なんて説明よりなんて実践的(笑) 実際のところオブジェクト指向のとっかかりとしては、継承の感覚(さっきコピペっていったところ)より、ひとつのクラスから複数のインスタンスがつくれる感覚の方が、実例がないとつかみづらいですよね。 カローラは大量生産できるのです。
というわけで、オブジェクト指向まで勉強できちゃうすてきな WordPress の巻でした。 🙂