3階層しかないという前提ですが、取得したtermの親が親カテゴリーのIDかどうかをチェックすれば良いと思います。
親が親カテゴリーのIDであれば、子カテゴリという判断です。
var in_p = false;
if($value->parent == 親カテゴリーのID) {
if(in_p){
echo '</ul></p>';
in_p = false;
}
in_p = true;
echo '<p><ul>'
}else{
echo "<li><a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $value->name;?></a></li>"
}
echo '</ul></p>';
in_p = false;
※上記コードは一度も実行していないことをご了承ください。
ご回答ありがとうございます。
しかしすみません…書いていただいたソースをどこにどう書き足せば良いのかが分からず…
あれこれやってみたのですが、エラーばかりで。
大変お手数なのですがその点で再度ご回答いただければ幸いです。
よろしくお願いいたします。
実行していないとはいえ、ちょっと不具合等いろいろ荒すぎてすいません。
子カテの下に孫カテが表示されるとのことですので、以下のようにカテゴリが取得できたとして
array(8) {
[0]=>
object(stdClass)#1 (3) {
["parent"]=>
int(0)
["term_id"]=>
int(1)
["name"]=>
string(12) "子カテ 01"
}
[1]=>
object(stdClass)#2 (3) {
["parent"]=>
int(1)
["term_id"]=>
int(2)
["name"]=>
string(15) "孫カテ 01-01"
}
[2]=>
object(stdClass)#3 (3) {
["parent"]=>
int(1)
["term_id"]=>
int(3)
["name"]=>
string(15) "孫カテ 01-02"
}
[3]=>
object(stdClass)#4 (3) {
["parent"]=>
int(1)
["term_id"]=>
int(4)
["name"]=>
string(15) "孫カテ 01-03"
}
[4]=>
object(stdClass)#5 (3) {
["parent"]=>
int(0)
["term_id"]=>
int(2)
["name"]=>
string(12) "子カテ 02"
}
[5]=>
object(stdClass)#6 (3) {
["parent"]=>
int(2)
["term_id"]=>
int(2)
["name"]=>
string(15) "孫カテ 02-01"
}
[6]=>
object(stdClass)#7 (3) {
["parent"]=>
int(2)
["term_id"]=>
int(3)
["name"]=>
string(15) "孫カテ 02-02"
}
[7]=>
object(stdClass)#8 (3) {
["parent"]=>
int(2)
["term_id"]=>
int(4)
["name"]=>
string(15) "孫カテ 02-03"
}
}
これを以下のように処理します。
$in_p = false;
foreach($categories as $category){
if($category->parent == $parent_id) {
if($in_p){
echo '</ul></p>';
$in_p = false;
}
$in_p = true;
echo '<p><ul>';
}else{
echo "<li><a href=\"".get_category_link($category->term_id)."\">$category->name</a></li>";
}
}
echo '</ul></p>';
$in_p = false;
実行結果はこのままだと1行で出てくるので、整形すると、以下のとおりです。
<p>
<ul>
<li><a href="http://foo.bar/vategory/2">孫カテ 01-01</a></li>
<li><a href="http://foo.bar/vategory/3">孫カテ 01-02</a></li>
<li><a href="http://foo.bar/vategory/4">孫カテ 01-03</a></li>
</ul>
</p>
<p>
<ul>
<li><a href="http://foo.bar/vategory/2">孫カテ 02-01</a></li>
<li><a href="http://foo.bar/vategory/3">孫カテ 02-02</a></li>
<li><a href="http://foo.bar/vategory/4">孫カテ 02-03</a></li>
</ul>
</p>
追記です。
取得できたカテゴリは「$categories」に、親カテゴリのIDは「$parent_id」に入っているものとします。
あと、子カテゴリのリンクを出力するのを忘れていました・・・
$in_p = false;
foreach($categories as $category){
if($category->parent == $parent_id) {
if($in_p){
echo '</ul></p>';
$in_p = false;
}
$in_p = true;
echo '<p>';
echo "<a href=\"".get_category_link($category->term_id)."\">$category->name</a>";
echo '<ul>';
}else{
echo "<li><a href=\"".get_category_link($category->term_id)."\">$category->name</a></li>";
}
}
echo '</ul></p>';
$in_p = false;
<p>
<a href="http://foo.bar/vategory/1">子カテ 01</a>
<ul>
<li><a href="http://foo.bar/vategory/2">孫カテ 01-01</a></li>
<li><a href="http://foo.bar/vategory/3">孫カテ 01-02</a></li>
<li><a href="http://foo.bar/vategory/4">孫カテ 01-03</a></li>
</ul>
</p>
<p>
<a href="http://foo.bar/vategory/2">子カテ 02</a>
<ul>
<li><a href="http://foo.bar/vategory/2">孫カテ 02-01</a></li>
<li><a href="http://foo.bar/vategory/3">孫カテ 02-02</a></li>
<li><a href="http://foo.bar/vategory/4">孫カテ 02-03</a></li>
</ul>
</p>
munyagu様
懇切丁寧なご回答、本当にありがとうございました。
タグの追加をしたくてあれこれしてみたら、このソース以降が表示されなくなってしまって焦ったのですが、自分のタグ追記がミスだったことが判明して、最終的に思ったような出力をすることが出来ました。
重ね重ね、ありがとうございました。
しばらくしたら、閉じさせていただきますね。