驚くほどシンプルでイカしたwordpressテーマ「wsc7」をカスタマイズしよう – その9 – 即席ウィジェットを作る

一連の記事→wordpressテーマをカスタマイズしよう Archives – aoringo works

プロデューサー! ウィジェットですよウィジェット!! のヮの

ウィジェットはとても大事です。サイドバーを彩ります。しかし自分で作るには少しハードルが高い。テヘペロ。

いちいちオプションとかくっつけたりして、なんか意味不明なコードが沢山あって。いやん、ばかん。

だからテンプレートとして簡単な即席ウィジェットを一つ持っておくと便利ですよ。

まずは実際に出力されるソースを見ます。

 <div id="meta-2" class="side-widget"><p class="widget-title">メタ情報</p>			<ul>
			<li><a href="http://192.168.0.56/wordpress/wp-admin/">サイト管理</a></li>			<li><a href="http://192.168.0.56/wordpress/wp-login.php?action=logout&_wpnonce=9e97d1c9d7">ログアウト</a></li>
			<li><a href="http://192.168.0.56/wordpress/?feed=rss2" title="このサイトを RSS2.0 で購読">投稿の <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="http://192.168.0.56/wordpress/?feed=comments-rss2" title="すべての投稿への最新コメントを RSS で購読">コメントの <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="http://ja.wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li>
						</ul>
</div>

ぐちゃあ・・・、wordpressによって生成されるコードは視認性が悪いですね。まあ愚痴ってもしかたがありません。

とりあえず抜き出すと、「ID=meta-2 class=sidewidget」のdivと「class=widget-title」のpさえあれば後は自由っぽいことがわかります。divのIDさえ変更すればあとは同じでも大丈夫そうです。

で、即席ウィジェットのコードはこれ

class capWidget extends WP_Widget {
  function capWidget() {
    parent::WP_Widget(false, $name = 'hogehogename');
  }

  function widget() {
    ?>
      <div id="hogeid" class="side-widget">
        <p class="widget-title">hogehogename</p>
      </div>
  <?php
  }
add_action('widgets_init', create_function('', 'return register_widget("capWidget");'));

「capWidget」の部分と「hoge」の部分は自由にかえちゃってください。

「function capWidget() {」の中身がダッシュボードのウィジェットページに表示される名前です。

で、「function widget() {」の中身が実際に出力される部分。ここに色々なphpコードをぶち込んじゃって下さい。

広告コードを入れる、記事ページの場合だけ表示されるコンテンツを作る、やりようは色々ありますね。

class capWidget extends WP_Widget {
  function capWidget() {
    parent::WP_Widget(false, $name = 'カテゴリボックス');
  }

  function widget() {
    ?>
    <?php if(is_single()) : ?>
      <div id="sidecatlist" class="side-widget">
        <ul>
          <?php wp_list_categories('depth=true&hide_empty=0&title_li=&child_of=15'); ?>
        </ul>
      </div>
    <?php endif; ?>
  <?php
  }
}

add_action('widgets_init', create_function('', 'return register_widget("capWidget");'));

ためしに記事ページの時だけ表示されるカテゴリー一覧、というものを組んでみました。

トップページ、無い。

記事ページ、ある。

良い感じの動作ができていますね。

一連の記事→wordpressテーマをカスタマイズしよう Archives – aoringo works