つながるnet

子カテゴリで絞り込み検索

カテゴリページ上部に子カテゴリのリンクテキストを置いて、子カテゴリで絞り込み検索させるスニペットです。

カテゴリ構造

親カテゴリ(スラグ: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>

直接メールしてみる

お名前 (必須)
メールアドレス (必須)
件名
ご相談内容
画像文字をご入力ください
captcha

コメントを残す