is_category は親を指定すれば良いはずですが、試してみましたか?
in_category は直接指定ですけど。
kvexさま
レスありがとうございます。
下記のようにis_categoryで親を指定してみましたが、
子カテゴリーのアーカイブページでは思ったような動きをしてくれないようです。
<?php
if (is_category(1)) { ?>
親カテゴリーAに属するカテゴリーのアーカイブ内容
<?php
} elseif (is_category(4)) { ?>
親カテゴリーBに属するカテゴリーのアーカイブ内容
<?php
} else { ?>
その他のカテゴリーのアーカイブ内容
<?php } ?>
PHP初心者のためイマイチ分っておりませんが、よろしくお願いいたします。
ダメでしたか?
私は、こういう使い方してるんですけどねぇ。
思ったようにならない、というのは、具体的にどうなったか提示してもらえますか?
is_category()って、スラッグとか配列とかでも渡せるので:
is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) );
ここいらを上手く使って、スラッグ合成+変数渡しってのはどうですかね?親+子という適当なルールを作って…
$my_cat_q = $parent_slug . '-' . $child_slug;
if( is_category( $my_cat_q ) ) { .... }
こんな感じに合成してから渡す、みたいな…。
ハードコードしちゃうと、後でカテゴリが増えた時に困るだろうから、親のslugはID番号、子のslugは親+子のID、例えば9-10とか5-12とかにすれば、ID番号を基準にslugが合成出来るから、後はそれをis_categoryに渡せばえーんじゃないかな、と思いますがいかがでしょう?
kvexさま
具体的に言うと、子カテゴリーA-1、A-2、B-1、B-2ページの内容が
「その他のカテゴリーのアーカイブ内容」になってしまうようです。
V.J.Catkickさま
レスありがとうございます。
親タイトル:food、親スラッグ:food
子タイトル:orange、子スラッグ:food-orange
上記のような設定をするということでしょうか?
これだとテンプレート内でタイトルを使用しているので、
タイトルを変更するという別の問題が生じてしまう気がします。
そう思って、IDで割り振る方に書き直しました(汗)。
カテゴリを作る時のSlugにIDを入れて置けば合成出来そうです。
V.J.Catkickさま
アドバイスありがとうございます。
下記のようなコードで実現することができました。
<?php
$cat_now = get_the_category();
$parent_id = $cat_now[0]->category_parent;
$child_id = $cat_now[0]->cat_ID;
$my_cat_q = $parent_id . '-' . $child_id;
if (is_category($my_cat_q)) { ?>
スラッグが親ID+子IDのカテゴリーのアーカイブ内容
<?php
} else { ?>
その他のカテゴリーのアーカイブ内容
<?php } ?>
もう少し工夫が必要ですが、少しづつ勉強していこうと思います。