HOME > blog > WPカスタマイズ備忘録 > カテゴリーごとに違うテンプレートを表示させる条件分岐の書き方

カテゴリーごとに違うテンプレートを表示させる条件分岐の書き方

wordcamp東京2012で株式会社ベクターの鳥山優子さんが、企業サイトではカテゴリーごとに表示させたい内容が違うので、個別のテンプレートを用意するとよいと話されていました。

▼wordcamp東京2012のタイムテーブル
タイムテーブル | WordCamp Tokyo 2012

▼スライドはこちらで公開されています。
WordCamp Tokyo 2012 登壇しました | データベースに接続できません

手書きのHTMLサイトの場合はカテゴリートップページの内容が違っていることがあるので、これからwordpressに移行しようと思っている方なら、個人サイトの運営者であっても参考になる方法だと思いました。

【2012年9月20日 追記】最初に紹介した方法よりシンプルな方法を知りましたので、そちらを使うことにしました。

▼参考にさせていただいたサイト
WordPressテンプレートを各カテゴリ等で別々に使い分ける | フリーランスWebデザイナーの日記

デフォルトのカテゴリテンプレートは「category.php」ですが、特定のカテゴリ専用のカテゴリテンプレートのファイル名には「category-8.php」のように、ハイフンとカテゴリIDの数字をつけて保存するだけです。

とってもシンプル!

カテゴリーIDの調べ方

wordpress管理画面>投稿>カテゴリー で調べたいカテゴリーにマウスオーバー。

下にID=と表示された数字がカテゴリーIDです。

下に表示されない場合は、カテゴリーをクリックすると、URLに表示されます!

arcive.phpかcategory.phpに書くこと

【2012年9月20日 訂正】以下のやり方より簡単な方法を知りましたので、そちらに差し替えます。以下のやり方だと別に用意したテンプレートだけが読みこまれヘッダーやフッターが書けてしまうなどの不具合が出て(しかも一部のカテゴリーにだけ)しまったことも変更の理由です。

そこでさっそく作成中のサイトのwordpress以降で、カテゴリーごとに違うテンプレートを表示させる方法を取り入れました。

【作業1】
カテゴリーごとのテンプレートを用意する
⇒テキストファイルで表示させたい部分内容を書いて、category-css.php などの名前で保存する。保存するときの文字コードに注意(たいていutf8のはず)

【作業2】
arcive.php(category.phpがあるならそちらに)に違うカテゴリーテンプレートを読み込ませる記述をする。
⇒コードは以下の通りです

<?php
if ( in_category('★') ) {
	include(TEMPLATEPATH . '/category-css.php');
} else if ( in_category('★') ) {
	include(TEMPLATEPATH . '/★★★★');
} else {
	include(TEMPLATEPATH . '/category-base.php');
}
 ?>

WordPressのテンプレートをカテゴリ別に切り替える | webOpixelから引用させていただきました。

★の部分にはカテゴリーIDが入ります。
★★★★には作ったカテゴリーテンプレート名が入ります。

一つだけ違うテンプレートを表示させたい場合は、不要な行を消して書けばOK.

<?php
if ( in_category('★') ) {
	include(TEMPLATEPATH . '/category-css.php');
} else {
	include(TEMPLATEPATH . '/category-base.php');
}
 ?>

逆にもっと増やしたい場合は、

<?php
if ( in_category('★') ) {
	include(TEMPLATEPATH . '/category-css.php');
} else if ( in_category('★') ) {
	include(TEMPLATEPATH . '/★★★★');
} else if ( in_category('★') ) {
	include(TEMPLATEPATH . '/★★★★');
} else {
	include(TEMPLATEPATH . '/category-base.php');
}
 ?>