[wordpress] 単一ページ(single.php)の内容を属するカテゴリー毎に変更する

公開日:2013年12月1日

単一ページのデザインを、属するカテゴリー毎に変更したい場合のメモです。
(カスタムフィールド値を利用する場合など)

in_category を使って(single.php)を条件分岐します(数字はカテゴリーのID)

single.phpの変更したい部分を下記のように記述

<?php if (in_category('6') || in_category('7')): ?>
(6・7カテゴリーの場合の内容)

<?php elseif (in_category('8') ): ?>
(8カテゴリーの場合の内容)

<?php else: ?>
(その他カテゴリーの場合の内容)

<?php endif; ?>

 

変更部分のコードが長く複雑な場合は、インクルードする方が管理しやすいことも

sample-2.php,sample-3.phpというように別々に作成

<?php if (in_category('6') || in_category('7')): ?>
include(TEMPLATEPATH . '/sample-2.php');

<?php elseif (in_category('8') ): ?>
include(TEMPLATEPATH . '/sample-3.php');

<?php else: ?>
(その他のカテゴリーの場合の内容を記述しておく)

<?php endif; ?>

 

表示を変えたいカテゴリーが1つだけの時は下記の記述でok

<?php if(in_category(5)): ?>
カテゴリー 5 に表示する内容

<?php else : ?>
(その他カテゴリーの場合の内容)

<?php endif; ?>

 

記述方法はいろいろ・・・下記のように書いてもOK

<?php if(in_category(5)): ?>
(カテゴリー 5 に表示する内容)

<?php elseif(in_category(array(6,7))) : ?>
(カテゴリー 6,7 に表示する内容)

<?php else : ?>
(その他のカテゴリーの場合の内容)

<?php endif; ?>

 

カテゴリー5も6も7も・・・内容が違う場合

<?php if(in_category(5)): ?>
(カテゴリー 5 に表示する内容)

<?php elseif(in_category(array(6))) : ?>
(カテゴリー 6に表示する内容)

<?php elseif(in_category(array(7))) : ?>
(カテゴリー 7に表示する内容)

<?php else : ?>
(その他カテゴリーの場合の内容)

<?php endif; ?>