カテゴリーごとに変えるsingle.phpのデザイン

WordPressで「投稿記事、このカテゴリーだと写真(サムネイル)はつけたいけど、
このカテゴリーには写真はつかなくてもいい。」
「このカテゴリーの投稿だけヘッダーの画像を変えたい」

・・・っていう経験がある方もいらっしゃると思います。

固定ページだとそれぞれテンプレファイルを作ってアップすれば、
使いたいテンプレートを選んで好きなデザインにできますが、
投稿記事ではちょっとやり方が違います。

今回はカテゴリーごとに投稿記事のテンプレート(single.php)を変える方法です。

用意するもの

各カテゴリーごとに表示させる単一記事のテンプレート。
(例)
カテゴリーA(カテゴリーナンバー1)・・・single1.php
カテゴリーB(カテゴリーナンバー2)・・・single2.php
それ以外のカテゴリー用・・・single3.php

投稿記事を表示するためのテンプレートを必要な分用意します。
今回はカテゴリーA用をsingle1.php、カテゴリーB用をsingle2.php、
それ以外のカテゴリー(普通の投稿用)に使うものをsingle3.phpとしました。

次に、以下のコードをまっさらな状態のsingle.phpに記述します。

single.php
[xml]
<?php
$post = $wp_query->post;
if ( in_category(‘1′) ) {
include(TEMPLATEPATH.’/single1.php’);
} elseif ( in_category(‘2′) ) {
include(TEMPLATEPATH.’/single2.php’);
} else {
include(TEMPLATEPATH.’/single3.php’);
}
?>
[/xml]

in_category(‘カテゴリーナンバー)、
include(TEMPLATEPATH.’/テンプレファイル’);

・・・という具合です。
各カテゴリーのテンプレはカテゴリーナンバーを使って呼び出します。
カテゴリーナンバーの知り方は、「WordPressに新着情報を載せる方法」の
最下部でちょちょっと説明しています。

上記のコードは、
カテゴリーナンバー1(カテゴリーA)のとき、single1.phpを呼び出し、
カテゴリーナンバー2(カテゴリーB)のとき、single2.phpを呼び出す。
それ以外のカテゴリーのときはsingle3.phpを呼び出す、ということです。

ですので、

[xml]
elseif ( in_category(‘2′) ) {
include(TEMPLATEPATH.’/single2.php’);
}
[/xml]

この部分を増やせば、すべてのカテゴリーごとに
違うデザインで作ることも可能になるんじゃないかと思います。

single.phpには通常、日付やタイトル、本文が記述されていますが、今回はそれらの代わりに上記のコードを使います。
single.phpの中に、それぞれのテンプレートを呼び出して表示するというかたちになります。

実は最初、まっさらな状態のsingle.phpにコードを書く、というのを知らなくて
ふつーに投稿のコードが書かれたsingle.phpに記述してました( ̄∀ ̄;)
何度やっても同じ記事が2つ表示されてしまう状態で、
「あっれー?おっかしいなぁ・・・」としばらく悩んでしまったのです。
ソースを見てるうちに何となくわかってきて解決できたんですが、ほんっとに悩みました;
ほとんどの方はこんなミスをやらかさないと思いますが、要注意ですw