hello foo bar Saba note | WPのダイナミックサイトバーの作り方

WPのダイナミックサイトバーの作り方

2012.12.28 (金)

画像があってここが詳しいです。英語だけど本家の解説はこちら。
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/dynamic_sidebar

functions.phpにレジスタの関数を書く

1つのテーマには1つのfunctions.phpがあります。functionではなく、function(s)です。これを間違って私はかなりはまりました。このfunctions.phpに以下を追記します。

<?php
//管理画面からサイドバーウィジェットが使えるようにする
if ( function_exists('register_sidebar') ) register_sidebar();
?>

これは管理画面からウィジェットを選択してドラッグ&ドロップで簡単にサイドバーを作れるようにするためにそのレジスタを用意します。これでダイナミックサードバーが使えるようになります。
サイドバーを呼び出す
実際にサイドバーを置く場所に、

<ul>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar() ) : ?>
//ダイナミックサイドバーなかった時の処理
<?php endif; ?>
</ul>

を書きます。たいていの場合は、sidebar.phpであるかもしれません。
どういうわけか、<li>タグでもってジェネレートします。外側の<ul>抜きで出力してくるので、<ul>は予め手打ちでつけて上げる方が文法上正しい記述になります。<後は管理画面に戻って「外観」→「ウィジェット」にすすんでお好みのウィジェットを選択するだけです。
よくよく使っていると<ul>が関数から出力されないのはなかなか賢い設計でして、ulに直接idやclassを振っていろいろカスタマイズできるわけです。子要素の<li>に関しては特にclassがなくてもDOMで指定することができる利点があります。