断水している地域に供給したいくらい鼻水が止まらないYu-ichiです
さて、WordpressをCMSっぽく使う際に、TOPと2階層目以降でサイドバーを変えたい!
という思いが強くあります。
調べてみるとそれ用のテンプレやプラグインがありましたが
バージョンが古く、使えない物ばかりでした。。。
もし使えそうなものがあったら教えてください!!
で、仕方が無いので直接テーマファイルを編集してみましたので
備忘録として書いておきたいと思います。
ちなみにWordpressのバージョンは3.1、編集するテーマは「Twenty Ten」です。
編集するファイルたち
- functions.php
- sidebar-●●.php
- page.phpやcategory.php、style.cssなど
方法ですが、まずfunctions.phpを開いて400行目付近にある以下の個所をコピーして
すぐ下に貼り付けます。
// Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
register_sidebar( array(
'name' => __( 'Secondary Widget Area', 'twentyten' ),
'id' => 'secondary-widget-area',
'description' => __( 'The secondary widget area', 'twentyten' ),
'before_widget' => '<li id="%1$s">',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
そのあと、「secondary」の部分を適当に編集します。
例えば「ページ」で使いたい場合はわかりやすいよう「page」にしてみます。
// Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
register_sidebar( array(
'name' => __( 'page Widget Area', 'twentyten' ),
'id' => 'page-widget-area',
'description' => __( 'The page widget area', 'twentyten' ),
'before_widget' => '<li id="%1$s">',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
「functions.php」の編集はこれで終わりです。
次に、「sidebar.php」をコピーして「sidebar-page.php」とリネームします。
中身はこんな感じにしています。
<?php
// A page sidebar for widgets, just because.
if ( is_active_sidebar( 'page-widget-area' ) ) : ?>
<div id="page" role="complementary">
<ul>
<?php dynamic_sidebar( 'page-widget-area' ); ?>
</ul>
</div><!-- #page .widget-area -->
<?php endif; ?>
次に「index.php」や「page.php」を開き、
<?php get_sidebar(); ?>
<?php get_sidebar(page); ?>
とサイドバーを変更したいテンプレートファイルのサイドバーを呼び出す部分の「( )」の中に名前を入れます。
あとは管理画面の「外観」→「ウィジェット」に「page widget area」が追加されているので
そこに表示したい項目を追加してください。
最後に、スタイルシートを編集するのを忘れずに!
っと、書いてみましたが・・・実はまだ実験の途中なので間違っていることを書いてるかもしれません。。
とりあえず、私の方ではこの方法で上手く動いているので、参考になれば幸いです。