親カテゴリーのテンプレートは子カテゴリーでは使用できない
WordPressのカテゴリーページは、カテゴリーごとに独自のテンプレートファイルを適応することができます。
これは便利な機能なのですが、親子関係のあるカテゴリーで、子カテゴリーに親カテゴリーと同じテンプレートを適応させたい場合、これがちょっと面倒なのです。
例えば、親カテゴリーのスラッグが『test』の場合、独自のテンプレートを適応させるときは『category-test』(一例です)というファイルを作成します。
このファイルはデフォルトでは親カテゴリーのみに適応され、子カテゴリーでこのファイルを使用することはできません。
子カテゴリーのスラッグが『test2』の場合、『category-test』を複製してファイル名を『category-test2』としなければなりません。
子カテゴリーが100個あった場合は、100個のファイルを作成しなければならないというわけです。
そんな面倒なことはしていられません。
そこで、親カテゴリーのテンプレートを子カテゴリーにも適応させるカスタマイズの出番です。
親カテゴリーのテンプレートを子カテゴリーにも適応させるカスタマイズ
カスタマイズはコピペでOKです。
下記のコードを『function.php』に追記してください。
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;
}
add_filter( 'category_template', 'my_category_template' );
上記コードの参考サイト
上記のコードを『function.php』に追記するだけで、親カテゴリーのテンプレートを子カテゴリーにも適応させることができます。
まとめ
親カテゴリーのテンプレートを子カテゴリーにも適応させるカスタマイズをご紹介しました。
カテゴリーに親子関係があり、カテゴリーごとにデザインを変更したい場合などに、使う機会のあるカスタマイズです。
興味のある方は参考にしてください。
コメントを残す