mmedo78
メンバー
3 years前の投稿 #
●WordPressバージョン2.5.1
テンプレートの指定方法で悩んでいます。
例えば・・・Aの親カテゴリとAに属する子カテゴリB、Cがあるとして、「親A」に属する「子B、C」は「親A」と共通のテンプレート。
もし、親カテゴリ「E」を新規追加し「子C」を「親E」に属する子カテゴリとした場合、「子C」は「親E」のテンプレートに自動的に切り替わる。
このように、属する親カテゴリーのテンプレートが、子カテゴリーにも反映されるようにしたいのです。もし、方法があれば教えてください。
宜しくお願いいたします。
▼以下の方法以外でお願いいたします
- 子カテゴリの記事投稿の際、「カテゴリ」選択で親カテゴリにもチェックしてテンプレートを反映させる
- テンプレートタグ<?php if(in_category('ID')): ?>でカテゴリIDを指定する
(このタグだとカテゴリ追加毎に、IDを指定しないといけないので・・・)
mizube
メンバー
3 years前の投稿 #
<?php
function in_category_family( $parent ) {
if ( empty($parent) )
return false;
if ( in_category($parent) )
return true;
$parent = get_category($parent);
foreach ( (get_the_category()) as $child ) {
$child = get_category($child->cat_ID);
if ( cat_is_ancestor_of($parent, $child) )
return true;
}
return false;
}
?>
というような関数を作ってみるといいのではないかと思います。
<?php
if ( function_exists('in_category_family') && in_category_family(1) )
echo "この投稿は、カテゴリー 1 か、その子カテゴリのいずれかに属しています。";
?>
この例ですと、テンプレートにおける場合分けの際、
親カテゴリーのIDだけはどうしても指定する必要がありますので、
期待されている方法ではないかもしれませんが。
mmedo78
メンバー
3 years前の投稿 #
mizube様、ご返信ありがとうござます。
さっそく教えていただいた関数をfunctions.phpへ追加し、
「in_category_family」を、テンプレート呼び出しで使用したらバッチリです!
子カテゴリーが、親カテゴリーのテンプレートに自動で反映される方法を探していたので、
これぞ、私が望んでいた方法です!
本当にありがとうございました。