WordPressは1.5になってからカテゴリ毎にテンプレートを設定できるようになったのはテンプレートをカテゴリ毎に変更するでも書きました。これとis_機能によって、カテゴリ、ページ、ポスト毎にテンプレートに変化を加えることができてとても便利だったのですが、例えば、「Test」というカテゴリだけに別のサイドバー(sidebar-2.php)を使いたい時、
<?php get_sidebar(); ?>
の部分を
<?php if(is_category('Test')){ ?>
<?php include (TEMPLATEPATH . ‘/sidebar-2.php’); ?>
<?php } else{ ?>
<?php get_sidebar (); ?>
<?php } ?>

とすればいいので簡単なのですが、このsidebar-2.phpを複数のカテゴリで使用したい時のやり方があればとずっと検索していました。
1つずつ指定するのはカテゴリ数が少ない時がいいのですが、例えばカテゴリIDが1・2・3はsidebar.php、4・5・6はsidebar-2.phpを、その他はsidebar-3.phpを使いたいなんて時には1つずつ指定するのは少し面倒。
CodexのThe_LoopページのExclude Posts From Some Categoryを参考にして複数カテゴリに適応できないかやってみました。
<?php if ( !(in_category('3') && is_home()) && in_category('1')) { ?>
<?php get_sidebar(); ?>
<?php } else{ ?>
<?php } ?>

何故かこれをcategory.phpに入れたら出来ましたがindex.phpでは効かず。is_homeを抜くとcategory.phpでも効かず。上のコード、homeの後の”)”が1つ多い様な気がするんですが、抜くとエラーでまた効かず。うまく行ったときも、該当するカテゴリに(この場合IDが1と3)投稿がないとサイドバーにエラーが出てくるし、複数にまたがるカテゴリの投稿は1と3を選ぶなら問題ないと思いますが、違うもの(例えば2など)を選ぶと正常に動きません。やっぱり無理なのかな ?:sad: PHPが解る人ならきっと簡単に出来てしまうんでしょうね :cool:
本当は、サブカテゴリがメインカテゴリのテンプレートを使う設定だったら良いのにと思いますが、ForumのCategory Template applied to Sub-categoriesによると、まだこれはできないみたいですね。