カテゴリページ上部に子カテゴリのリンクテキストを置いて、子カテゴリで絞り込み検索させるスニペットです。
カテゴリ構造
親カテゴリ(スラグ:parent) -子カテゴリA(スラグ:child_a) -子カテゴリB(スラグ:child_b) -子カテゴリC(スラグ:child_c)
以下をループの前に設置
<?php $root = get_bloginfo('home'); $culCatSlg = $category_name;//表示中のカテゴリスラグを取得 $catArr = get_category_by_slug($culCatSlg ); //表示中のカテゴリ情報配列を取得 $pCatId = $catArr -> parent;//親カテゴリのIDを取得 if ($pCatId == "0") {//表示中のカテゴリが親なら $pCatId = $catArr -> term_id;//親カテゴリのID } else {//表示中のカテゴリが子カテゴリなら $cCatNam = $catArr -> name;//子カテゴリ名を取得 } $pCatArr = get_category($pCatId);//親カテゴリ情報配列を取得 $pCatNam = $pCatArr -> name;//親カテゴリ名を取得 $pCatSlg = $pCatArr -> slug;//親カテゴリスラグを取得 ?> <h2 class="entry-title"><?php echo $pCatNam ?><?php if ($cCatNam != "") echo " ― ".$cCatNam ?></h2> <?php $cCatArr = get_terms( 'category', 'child_of='.$pCatId ); //子カテゴリ情報配列の取得 if (count($cCatArr) > 0)://子カテゴリが存在するなら ?> <ul class="catList"> <?php foreach( $cCatArr as $cCat ): $cCatSlg = $cCat -> slug;//子カテゴリスラグ $cCatNam = $cCat -> name;//子カテゴリ名 ?> <ul> <li><a href="<?php echo $root.'/' ?><?php echo $cCatSlg ?>"><?php echo ($culCatSlg == $cCatSlg)? "<strong>{$cCatNam}":$cCatNam ?></a>|</li> </ul> <!--?php endforeach ?--> <ul> <li><a href="<?php echo $root ?>"><?php echo ($culCatSlg == $pCatSlg)? "<strong>すべて</strong>":"すべて" ?></a></li> </ul> <?php endif ?>
吐き出されるhtmlの例(子カテゴリBを表示している場合)
<h2>親カテゴリ ― 子カテゴリB</h2> <ul class="catList"> <li><a href="ドメイン/child_a">子カテゴリA</a>|</li> <li><a href="ドメイン/child_b"><strong>子カテゴリB</strong></a>|</li> <li><a href="ドメイン/child_c">子カテゴリC</a>|</li> <li><a href="ドメイン/parent">すべて</a></li> </ul>