KH-WEBLOG TOP > WEBメモ > WordPress > 子カテゴリのカテゴリページを親カテゴリ用のテンプレートで表示する:WordPress

子カテゴリのカテゴリページを親カテゴリ用のテンプレートで表示する: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化作業を代行します

WordPressのおすすめ参考書

\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
楽天Kobo電子書籍ストア
¥3,278 (2024/04/19 19:05時点 | 楽天市場調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

TAGS

.htaccess ActionScript All in one seo pack Contact Form 7 CSS CSS3 EC-CUBE Flash HTML HTML5 JavaScript jQuery LightBox PHP RSS SEO WordPress アイキャッチ画像 アクセス解析 カスタムフィールド カテゴリー カラーミーショップ カート コメント ショートコード テンプレートタグ ドロップダウンメニュー パーマリンク フォーム フルスクリーン ブログカード プラグイン ページテンプレート ページナビ ページ分割 マウスイベント リダイレクト リンク リンクカード レンタルサーバー ロールオーバー 携帯サイト 条件分岐 正規表現 関連記事