WordPressでページ毎にサイドバーを変更

断水している地域に供給したいくらい鼻水が止まらないYu-ichiです:neko:

さて、WordpressをCMSっぽく使う際に、TOPと2階層目以降でサイドバーを変えたい!
という思いが強くあります。

調べてみるとそれ用のテンプレやプラグインがありましたが
バージョンが古く、使えない物ばかりでした。。。
もし使えそうなものがあったら教えてください!!

で、仕方が無いので直接テーマファイルを編集してみましたので
備忘録として書いておきたいと思います。

ちなみにWordpressのバージョンは3.1、編集するテーマは「Twenty Ten」です。

編集するファイルたち

  • functions.php
  • sidebar-●●.php
  • page.phpやcategory.php、style.cssなど

方法ですが、まずfunctions.phpを開いて400行目付近にある以下の個所をコピーして
すぐ下に貼り付けます。

</p>
<p> // Area 2, located below the Primary Widget Area in the sidebar. Empty by default.<br />
 register_sidebar( array(<br />
  'name' =&gt; __( 'Secondary Widget Area', 'twentyten' ),<br />
  'id' =&gt; 'secondary-widget-area',<br />
  'description' =&gt; __( 'The secondary widget area', 'twentyten' ),<br />
  'before_widget' =&gt; '&lt;li id=&quot;%1$s&quot;&gt;',<br />
  'after_widget' =&gt; '&lt;/li&gt;',<br />
  'before_title' =&gt; '&lt;h3&gt;',<br />
  'after_title' =&gt; '&lt;/h3&gt;',<br />
 ) );</p>
<p>

そのあと、「secondary」の部分を適当に編集します。
例えば「ページ」で使いたい場合はわかりやすいよう「page」にしてみます。

</p>
<p> // Area 2, located below the Primary Widget Area in the sidebar. Empty by default.<br />
 register_sidebar( array(<br />
  'name' =&gt; __( 'page Widget Area', 'twentyten' ),<br />
  'id' =&gt; 'page-widget-area',<br />
  'description' =&gt; __( 'The page widget area', 'twentyten' ),<br />
  'before_widget' =&gt; '&lt;li id=&quot;%1$s&quot;&gt;',<br />
  'after_widget' =&gt; '&lt;/li&gt;',<br />
  'before_title' =&gt; '&lt;h3&gt;',<br />
  'after_title' =&gt; '&lt;/h3&gt;',<br />
 ) );</p>
<p>

「functions.php」の編集はこれで終わりです。
次に、「sidebar.php」をコピーして「sidebar-page.php」とリネームします。
中身はこんな感じにしています。

&lt;?php<br />
 // A page sidebar for widgets, just because.<br />
 if ( is_active_sidebar( 'page-widget-area' ) ) : ?&gt;</p>
<p>  &lt;div id=&quot;page&quot; role=&quot;complementary&quot;&gt;<br />
   &lt;ul&gt;<br />
    &lt;?php dynamic_sidebar( 'page-widget-area' ); ?&gt;<br />
   &lt;/ul&gt;<br />
  &lt;/div&gt;&lt;!-- #page .widget-area --&gt;</p>
<p>&lt;?php endif; ?&gt;</p>
<p>

次に「index.php」や「page.php」を開き、

<br />
&lt;?php get_sidebar(); ?&gt;<br />

 

<br />
&lt;?php get_sidebar(page); ?&gt;<br />

とサイドバーを変更したいテンプレートファイルのサイドバーを呼び出す部分の「( )」の中に名前を入れます。

あとは管理画面の「外観」→「ウィジェット」に「page widget area」が追加されているので
そこに表示したい項目を追加してください。

最後に、スタイルシートを編集するのを忘れずに!

っと、書いてみましたが・・・実はまだ実験の途中なので間違っていることを書いてるかもしれません。。
とりあえず、私の方ではこの方法で上手く動いているので、参考になれば幸いです。

トラックバックURL

2 thoughts on “WordPressでページ毎にサイドバーを変更

  1. まりりん より:

    鼻水は、花粉症でしょうか・・・。
    お大事になさってください。
    応援しています^^ :girl:

  2. Yu-ichi より:

    >まりりんさん

    いつもコメント&お気使い有難うございます :neko:
    この時期なのできっと花粉症だと思います。
    いい季節なんですけどねぇ :hamster_7:

Yu-ichi へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。