ウィジェットその1

カスタムポストをサイドバーウィジットに出してみよう!

2012.06.02(土) WordPress, テーマ, 機能, 関数
このエントリーをはてなブックマークに追加

久々にWordPressネタです。
このブログでは読んだ本をMy本棚として、カスタムポストで登録しているのですが、その最新の投稿をサイドバーに出したいなぁ~、と思いまして、どうせならウィジェットやろうかなぁ~、と思ってやったら、思ったよりも簡単だったのでご報告しておきます。


1つのクラス、4つのメソッドを作成

ウィジェットは、WP_Widgetというクラスを継承した、そのウィジェット用のクラスを作ることから始まります。そのクラスがもつメソッドが、以下の4つで、大まかな役割はこんな感じ。

  1. コンストラクタ : 利用できるウィジェットに出す名前、説明などを指定します
  2. form : ウィジェット用オプション画面を指定します
  3. widget : 実際にサイドバーにだす内容を指定します
  4. update : リロード時の動作を指定します(多分・・・)

実際のソースです。

他のウィジェットのソースをパクって、ちょいちょいと変えて作るのが一番早いと思います(これもそうです)。

[php]
‘最近読んだ本を表示します’ );
parent::WP_Widget(false, $name = __(‘MyBooks’, ‘woothemes’), $widget_ops);
}

/* ————————-
②オプション設定
title:タイトル用文字列を設定
number:ウィジェットにいくつ記事を出すか
————————— */
function form($instance) {
$title = esc_attr($instance[‘title’]);
$number = esc_attr($instance[‘number’]);
?>

$do_not_duplicate = $post->ID; ?>

‘;
}
else{
echo ‘

‘;
echo ‘‘;
echo ‘

‘;
}
?>


[/php]

widgetの内容についてですが、WP_Queryでカスタムポストを、指定した件数分読み込んでいます。指定した件数というのは、formメソッド内のnumberで指定された数ですが、指定されてなければ1回となります。それをhave_postsメソッドで、取れなくなるまでループして出しています。ここでは、カスタムフィールドを出していますが、タイトルだけとかここは自由に出したいものを出せばよいかと思います。

最後の方でregister_widget関数にクラスを登録しています。こちらもお忘れなく。

ウィジェットのソースファイルを読み込む

require_once関数で、上記で作成したソースファイルを読み込んであげます。これを忘れてはメニューに出てきませんので。
場所はfunction.phpなどでよいでしょう。ちなみに、ソース名はなんでもいいし、場所もどこでも大丈夫です。

[php]

require_once ($includes_path . ‘widget-mybooks.php’); // Theme widgets

[/php]

たったこれだけです。どうですか?簡単でしょう。
実際の画面は、こんな感じになります。

ウィジェットその1


ウィジェットその2



ということで、これからもどんどん読んだ本を増やしていきますので、気になるものがあればチェックしてみてくだされ。

コメントを残す