通常WordPressでは、投稿詳細ではsingle.phpというテンプレートが読み込まれます。single.phpが投稿の共通テンプレートとして使用されるわけですが、特定のカテゴリーを含む時だけテンプレートを変更したい、というケースが出てくる場合があります。
そんな時のために、特定のカテゴリーを含む投稿のみ、テンプレートを変更する方法をご紹介いたします。
特定のカテゴリーを含む投稿で読み込むテンプレートを変更する方法
適用しているテーマのfunctions.phpに以下を追記します。
function template_include_change($template) {
if( is_single() && in_category('news') ) {
$template = dirname(__FILE__) . '/single-news.php';
}
return $template;
}
add_filter('template_include', 'template_include_change', 999);
これにより、投稿詳細でかつ”news”というカテゴリーが含まれる場合は、「single-news.php」が読み込まれるようになります。あとは、single-news.phpを用意して、テーマディレクトリにアップしてあげればOKです。
「in_category(‘news’)」と「single-news.php」の部分は、環境に合わせて適宜変更してください。
あとがき
上述した内容ではカテゴリーによってテンプレートを切り替えていますが、「if( is_single() && in_category(‘news’) )」の条件を変更すれば、色んなケースで読み込むテンプレートを切り替えることができます。
ちょっとした違いであれば、テンプレートを分けなくてもsingle.php内で条件分岐させれば良いと思いますが、大幅に変更が必要な場合はテンプレートを分けた方がわかりやすいですね。