子カテゴリのカテゴリページを親カテゴリ用のテンプレートで表示する:WordPress
親カテゴリページのデザインだけを変更する場合は
category-(カテゴリID).php
のようなファイルの作り方でできますが、このやり方だとその子カテゴリーのデザインにまで反映されないので、
子カテゴリにも親カテゴリのテンプレートを反映させる方法をメモ。
やり方はfunctions.phpに
add_filter( 'category_template', 'my_category_template' );
function my_category_template( $template ) {
$category = get_queried_object();
if ( $category->parent != 0 &&
( $template == "" || strpos( $template, "category.php" ) !== false ) ) {
$templates = array();
while ( $category->parent ) {
$category = get_category( $category->parent );
if ( !isset( $category->slug ) ) break;
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
}
$templates[] = "category.php";
$template = locate_template( $templates );
}
return $template;
}
を追加するだけでOK
上記はリクエストされたカテゴリに近い親カテゴリのテンプレートファイルを検索するような処理となっています。
カテゴリページのテンプレートファイルの優先順位は、
1.category-(カテゴリスラッグ名).php
2.category-(カテゴリID).php
3.category.php
4.archive.php
5.index.php
となっていますので
たとえば親カテゴリのIDが1の場合、
category-1.php
というテンプレートを作ると、その子カテゴリも
1.category-1.php
2.category.php
3.archive.php
4.index.php
の順番でテンプレートを探すようになります。
WordPressのおすすめ参考書
bookfan 1号店 楽天市場店
¥3,300 (2026/01/04 15:36時点 | 楽天市場調べ)

