テーマでウィジェット対応

widgetいつかはWordPress.org にテーマを登録してみたい。それにはウィジェット対応が必須なため、ちょっとやってみた。
テーマでウィジェットに対応するには、widgets_init フックを利用してウィジェットを表示するエリアを登録する。functions.phpでウィジェット領域のidや、ウィジェットの前後のタグを指定する。こうしておくことで管理画面の[外観]-[ウィジェット]の設定でウィジェットを選択することができるようになる。

function my_widgets_init() {

  if ( function_exists('register_sidebar') ){
    register_sidebar( array (
      'name' => 'widget-area',
      'id' => 'widget-area',
      'description' => 'Widget Area for sidebar',
      'before_widget' => '<div class="widget">',
      'after_widget' => '</div>',
      'before_title' => '<h3>',
      'after_title' => '</h3>',
   ) );
 }
}

add_action( 'widgets_init', 'my_widgets_init' );

ウィジェットの表示はsidebar.phpで行う。以下の例では、上記で登録した’widget-area’を表示する。ウィジェットがひとつも登録されていない場合には、代替としてカテゴリーの一覧を表示する。


if(!dynamic_sidebar('widget-area')): ?>
  <?php wp_list_categories(); ?>
<?php endif; ?>

ウィジェットはアーカイブ、タグクラウド、カレンダーなどデフォルトで用意されているほかにプラグインでも提供されている。WordPress 2.8以降ではウィジェットを簡単に作成できるクラスも提供されている。

コメントを残す

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>