2017.01.31   Web

wpでカテゴリ別にサイドバーの表示を変更させたいときの方法は?

WordPressを導入したサイトをつくるとき、ちゃんとコンテンツや目的がしぼれているサイトであれば、正直なところサイドバーをカテゴリ別に条件分岐させる必要はないであろう。しかしながら、カテゴリがそれぞれ別内容としてみせなければならないとなると、サイドバーもカテゴリによって表示を変えてあげないと逆に不自然になってくる。そんなときに、Wordpressでカテゴリ別にサイドバーの表示を変えたいときの備忘録である。

1.sidebar-◯◯◯.phpをテーマ内につくる。

テーマ内をみるとsidebar.phpというファイルが入っている。このsidebar.phpをコピーして、ファイル名を表示させたいものに変えるわけである。例えばカテゴリ名『test』であれば、『sidebar-test.php』という感じである。このとき、元のsidebar.phpを消してはいけない。これらによって、下記2で挿入した通り、指定したカテゴリのサイドバーを呼び出すことができる。

2.投稿ページsingle.phpの挿入したい部分に下記を追記。

<?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でカテゴリ別にサイドバーの表示を変えるのは簡単である。しかし、こうしてカテゴリのサイドバーを条件分岐しすぎると、いざ共通の部分を変更したいときにすべてを書き換えてかげなければならないというメリットもあることを忘れてはいけないだろう。


槍の間合いもまだまだだな。