WordPressを導入したサイトをつくるとき、ちゃんとコンテンツや目的がしぼれているサイトであれば、正直なところサイドバーをカテゴリ別に条件分岐させる必要はないであろう。しかしながら、カテゴリがそれぞれ別内容としてみせなければならないとなると、サイドバーもカテゴリによって表示を変えてあげないと逆に不自然になってくる。そんなときに、Wordpressでカテゴリ別にサイドバーの表示を変えたいときの備忘録である。
テーマ内をみるとsidebar.phpというファイルが入っている。このsidebar.phpをコピーして、ファイル名を表示させたいものに変えるわけである。例えばカテゴリ名『test』であれば、『sidebar-test.php』という感じである。このとき、元のsidebar.phpを消してはいけない。これらによって、下記2で挿入した通り、指定したカテゴリのサイドバーを呼び出すことができる。
<?php
if(in_category(‘カテゴリ名1’)) :
get_sidebar(‘sidebar-◯◯◯1.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名2’)) :
get_sidebar(‘sidebar-◯◯◯2.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名3’)) :
get_sidebar(‘sidebar-◯◯◯3.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名4’)) :
get_sidebar(‘sidebar-◯◯◯4.phpの◯◯◯部分を入れる’);
else :
get_sidebar();
endif
?>
上記はすなわち、『カテゴリ1の投稿ページが表示された場合、サイドバーはsidebar-◯◯◯1.phpの内容が表示されますよ。そして、カテゴリ2の投稿ページが表示された場合、サイドバーはsidebar-◯◯◯2.phpの内容が表示されますよ。そして…』ということである。いくつものカテゴリーを条件分岐させたい場合でも、カテゴリ4に続きて同じように追記していくだけである。
…上記コードのカテゴリ4に続いて
elseif(in_category(‘カテゴリ名5’)) :
get_sidebar(‘sidebar-◯◯◯5.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名6’)) :
get_sidebar(‘sidebar-◯◯◯6.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名7’)) :
get_sidebar(‘sidebar-◯◯◯7.phpの◯◯◯部分を入れる’);
elseif(in_category(‘カテゴリ名8’)) :
get_sidebar(‘sidebar-◯◯◯8.phpの◯◯◯部分を入れる’);
else :
get_sidebar();
endif
?>
いかがだろうか、wordpressでカテゴリ別にサイドバーの表示を変えるのは簡単である。しかし、こうしてカテゴリのサイドバーを条件分岐しすぎると、いざ共通の部分を変更したいときにすべてを書き換えてかげなければならないというメリットもあることを忘れてはいけないだろう。
年別一覧