ウイジェットもサクッと実装したいもののひとつだ。ウイジェットAPIが色々やってくれるが、毎日ウイジェットを作るわけではないので使い方を忘れてしまう。だからメモ。
以下が基本構造
class MyWidgetItem extends WP_Widget { //コンストラクタ。名前をクラス名に合わせること function MyWidgetItem() { parent::WP_Widget(false, $name = 'ウィジェットの名前'); } //ウイジェット本体を吐き出す部分 //$argsにはウイジェットの基本設定(beforeとかafterとか)が入っている。dynamic_sidebar()で設定するアレだ。extractをかけておく。 //$instanceにはこのウイジェット固有の設定は入ってくる function widget($args, $instance) { } //管理画面で情報を変更するとここを通るので、サニタイズなどをしてから$instanceを返す。 //$new_instanceを返すだけじゃダメなのか? function update($new_instance, $old_instance) { } //管理画面のフォーム //既存の値は$instanceに入っているので適宜取り出す。 //$this->get_field_idをガンガン使います。 function form($instance) { } } add_action('widgets_init', create_function('', 'return register_widget("MyWidgetItem");')); 以下がサンプルコード。マークアップは適当に。class MyWidgetItem extends WP_Widget { function MyWidgetItem() { parent::WP_Widget(false, $name = 'ウィジェットの名前'); } function widget($args, $instance) { extract( $args ); $title = apply_filters( 'widget_title', $instance['title'] ); $body = apply_filters( 'widget_body', $instance['body'] ); ?>
実は覚えることは多くない。この雛形を使い回せば何とかなりそう。同じ名前のローカル変数が多いのがちょっと嫌ですね。
コメント