wp-kotodama 1.00 & wp-kyodeki 1.00 リリースと WordPress のウィジェットとオブジェクト指向

なんだかリリースお知らせばっかりですが(笑)、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 リリース版をおつかいの方は、上書きしていただければと思います。 パスワード付き投稿も集計対象にしていたのを修正しています。

kyodeki50

 kyodeki51

wp-kotodama のほうは修正ありませんのでそのままでOKです。

kotodama02

kotodama01

なお両方ともウイジェットといいつつテンプレートタグでも動作できます。

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 の巻でした。 🙂

wp-kougabu 1.10 リリース

画像付きアーカイブを作成する WordPress プラグイン wp-kougabu 1.10 を JSeries のほうにリリースしましたのでお知らせします。

変更点は、画像のアスペクト比率維持モードの搭載と、処理の高速化です。 1.00 をお使いの場合は上書きしていただければと思います。 images 内のフレーム画像も増えていますので、忘れずにアップロードしてください。 🙂

1.01 プレビューをお使いの方も、いただいたレポートを元に、途中 CVS でいくつか変更していますので念のため上書きしていただけると助かります。

ダウンロードは JSeries よりです。

WordPress Plugins/JSeries » wp-kougabu (画像付きアーカイブ)

WordPress の投稿やページにアップロードされた画像ファイルを抽出し、サムネイルでページに一覧表示するショートコードを提供します。過去に投稿した画像をサイトに一覧表示しそこから本文にリンクされる、画像付きアーカイブのようなプラグインです。

アスペクト比率維持モード搭載により、画像サムネイルが若干かわっています。 1.00 の方は現在あるキャッシュが優先になります。 wp-content/cache/wp-kougabu 内部のファイルを一度削除すると新画像になります。

kougabu0a

いままでの表現でかまわない方はキャッシュ削除は不要です。 次回の生成からアスペクト維持モードで生成されます。 混在を嫌う方は、wp-kougabu-resize.php の先頭行を以下のように変更してください。

//define('KOUGABU_FRAME_NAME', 'nashi');
//define('KEEP_ASPECT', true);
 
//for version 1.00 compatible
define('KOUGABU_FRAME_NAME', 'maru');
define('KEEP_ASPECT', false); 

これで表現はいままで通りの引き延ばしになります。 1.10 の高速化(といっても体感ほとんど分からなそうですが)だけ対応されるです。

さてさて、次期 WordPress 2.9 はメディア機能がパワーアップするようですね!

WordPress | 日本語 » 2.9 メディア機能のアンケートに投票を!

先週の水曜日、コア開発チームと多くの貢献開発者が IRC の #wordpress-dev チャンネルに集まりました。このチャットの目的は、現在開発フェーズに入りつつあるバージョン2.9に含める機能について話し合うことでした。2.9ではメディア関連の機能(訳注: 画像・動画・音声他のファイルアップロードや管理など)に集中することを計画してきており、予想通りメディア関連の機能についての話題が大半を占めました(*注)。

まだ予定は未定と言うことですが、

メディアメタデータ (Media Metadata): メディアファイルに対してカテゴリーやタグを指定できるようにします。

投稿サムネイル (Post thumbnails): 投稿・記事・抜粋と共に表示する画像を選べるようにします。

とかいいですね~。

メディア機能はぼくも好きな機能のひとつなのでどうなっていくのか楽しみです。 🙂

wp-kougabu 1.01 & wp-kyodeki 1.00 プレビューリリース

画像アーカイブプラグイン wp-kougabu 1.01 と、いわゆる Todays Popular な記事の一覧を表示する新しいプラグイン wp-kyodeki をつくってみたので、とりあえずここでプレビューリリースしてみます!。 🙂

まず、wp-kougabu ですが、処理で遅い部分があったのの修正と、サムネイル画像のアスペクト比率がくるっていたのをなおしています。

wp-kougabu.tar.gz (CVS HEAD)

いま kougabu をお使いで、試験してみたい方はいれてみてください。 キャッシュを削除すると新形式で画像が作成されます。

kougabu50

こちらが新サムネイル形式です。 左右に灰色がでているとおもいますがこれが比率がくるっていた部分です。 現行版は引き延ばしていました。

(2009/07/13 追記)

うちの専属デザイナー(勝手に専属化。。)から、それなら内枠があるのはへん(?) という指摘がありましたので、対応しました!

kougabu56

うむ、よい。 ついこんもかわいくなりました。

kougabu55

比率維持時は内枠を消すように修正して、CVS HEAD にコミットしてあります。 images の画像も増えていますのでこちらもアップロードしてください。

また、現行版の”画像いっぱいモード”も define で選択できるようにしています。

/******************************************************************************
 * WpKougabu Resize - Define
 *****************************************************************************/
 
//for version 1.00 compatible
//define('KOUGABU_FRAME_NAME', 'maru');
//define('ASPECT', false);
 
define('KOUGABU_FRAME_NAME', 'nashi');
define('KEEP_ASPECT', true);

現行版の表現の方が好みの方は、wp-kougabu-resize.php の上2行のコメントアウトをはずして、下2行をコメントアウトしてください。 で、うえの ‘ASPECT‘ ってなっているのは、KEEP_ASPECT に修正してください。。(まちがえです、リリース版では修正しておきます)

(2009/07/13 追記おわり)

また、wp-kougabu にはキャッシュを作成する非同期側と本体側とで通信をするためのデータが処理上存在するのですが、この容量が大きくなって処理を重くする可能性があったため改善しています。 こちらはいれるだけで機能します。 キャッシュの削除は不要です。

つぎ、wp-kyodeki のほうですが、現在うちのブログの右サイドバーにでている、「本日アクセス数の多い記事一覧」を出力する widget です。

kyodeki50

いままでは bsuite プラグインで出力していたのですが、term 系のテーブルに reffer 情報などをアクセスごとに書き込む動きがあったため、アクセスごとにテーブルレコードが増える可能性がありました。

まぁまぁそれは仕様なのでよいのですが、ぼくの場合は本当に Todays Popular の出力だけを使いたかったのでちょっと余計。。

というわけで、いいかげんですがコンパクトな処理のものを自分でかいてみました。

wp-kyodeki.tar.gz (CVS HEAD)

widget “表示時に”カウントする仕組みをとっています。 また、Today だけなので翌日にはそのデータは捨てる仕様です。 なのでデータ増加はその日の範囲内だけになります。

一応、プログラムは新 widget 形式対応にしてみました。 これによりマルチ widget もいけますが、アクセス解析はひとつなのですべてに同じデータが表示されます。 別にしたらかっこいいかな、とも思いましたが使い道なさそうなのでやめました。。(笑

kyodeki51

WordPress にログインしている人のアクセスはのぞきます。 その他はボットなどのアクセスもそのままカウントしますし、同一 IP からの連続アクセスも複数としてカウントします。 ありありルールです。 まぁ1日の範囲なのでちょっとしたランダムポストみたいなイメージです。 🙂

また、widget 使っていない場合はテンプレートタグが使えます。

<?php the_kyodeki(6); ?>

とテーマにいれると同様のものが出力されると思います。(こちらのパターンは hiromasa.zone のほうに試験をかねて導入してみました)

kougabu & kyodeki とも CVS HEAD リリースです。 もしいれてなにか変なところあったら教えてください。 コミットしておきます。 🙂

とりあえず、今日は前から気になっていたところの修正からでした。。 もっとお休みがほしいであります。(笑)