WordPressでは、category-slug.php category-id.php テンプレートを作る事で、指定したカテゴリのプレゼンテーションを変更することが出来ます。
ただ、カテゴリが階層構造になっている場合、子カテゴリには、親のテンプレートは適用されません。親カテゴリ、子カテゴリのグループを対象に、特別なテンプレートを適用していく道を、探してみました。
以下のコードは、カテゴリID41とその子カテゴリの場合に、index.phpテンプレートを適用します。
<?php
add_filter( 'template_include', 'my_interrupt_template' );
function my_interrupt_template( $template) {
$args= array(
'type' => 'post',
'child_of' => 41,
);
$ids= array( $args['child_of'] );
$categories= get_categories( $args );
if( isset( $categories ) && !empty( $categories ) ) {
foreach ( $categories as $category ) {
$ids[]= absint( $category->term_id );
}
}
if ( is_category( $ids ) ) {
//この例では、indexテンプレートを呼び出しています。
return get_index_template();
}
return $template;
}
?>