WordPress – single.phpで特定のカテゴリーだけ表示を変える

single.phpの表示を特定のカテゴリーで表示を変更したい場合in_category();を使うことで実現可能です。

in_category()

if( in_category( $category, $post ) ){
    // ...
} else {

}
$category現在の投稿ページ(single.php)で属しているカテゴリーをチェック。カテゴリIDまたはカテゴリー名、スラッグ名を入力。複数のパラメータも使用可能。
$post投稿のIDまたはオブジェクト。デフォルトでは、現在の投稿はWordPressループ内または投稿ページで自動的に決定。

これらは通常の投稿で機能します。カスタム投稿などでは機能しません。

例えば通常の投稿タイプでWordPress(スラッグはwordpressとする)というカテゴリのみ表示を変更したい場合下記のようにしようします。下記のコードをsingle.phpに記述します。

if( in_category( 'wordpress' ) ){
    // 投稿が「WordPress」カテゴリーに属している場合
} else {
    // その他のカテゴリー
}

複数のカテゴリーの場合

if( in_category( ['wordpress', 'windows'] ) ){
    // 投稿が「WordPress」か「Windows」のカテゴリーに属している場合
} else {
    // その他のカテゴリー
}

テンプレートパーツを使う

もし複数のカテゴリーがある場合single.phpのコードの量は多くなります。そこでget_template_part()を使うことでカテゴリーごとに分けることが可能です。

if( in_category('wordpress') ){
    get_template_part( 'single/wordpress' );
} elseif( in_category('javascript') ) {
    get_template_part( 'single/javascript' );
} else {
    get_template_part( 'single/main' );
}