カテゴリで条件分岐

カテゴリの条件分岐

カテゴリを設定することで、たくさんの記事の中から同じ種類・分類に関して投稿された記事を簡単に見つけることができます。

そんなカテゴリでの条件分岐について紹介します。

親カテゴリに該当する場合の条件分岐

get_the_category(); で現在のカテゴリの取得して $cat_now に格納し、$parent_id = $cat_now->category_parent; で親カテゴリのIDを取得します。

そして取得した親カテゴリのIDを is_category に代入して条件分岐させます。

PHP

<?php 
// 現在のカテゴリ-を配列取得
$cat_now = get_the_category();
// 親の情報を$cat_nowに格納
$cat_now = $cat_now[0];
//category_parentを$parent_idに格納
$parent_id = $cat_now->category_parent;
if ( is_category($parent_id)) :
?>

<!-- 親カテゴリ以外の場合出力する内容 -->

<?php endif; ?>

子カテゴリに該当する場合の条件分岐

親カテゴリに該当する場合の条件分岐」の記述とほぼ同じ内容ですが、コメントアウトを含む8行目の ifis_category($parent_id) の前に「!」が付きます。

「!」は一致しない場合の条件分岐で、こうすることで「親カテゴリに一致しない場合 = 子カテゴリ」の条件分岐になります。

PHP

<?php 
// 現在のカテゴリ-を配列取得
$cat_now = get_the_category();
// 親の情報を$cat_nowに格納
$cat_now = $cat_now[0];
//category_parentを$parent_idに格納
$parent_id = $cat_now->category_parent;
if ( ! is_category($parent_id)) :
?>

<!-- 親カテゴリ以外の場合出力する内容 -->

<?php endif; ?>

親カテゴリではない場合にそのカテゴリに含まれるタグ一覧を出力

上記の「親カテゴリではない場合」の条件分岐で処理を分け、そのカテゴリページ内の記事に含まれるタグを全て出力します。

PHP

<?php 
// 現在のカテゴリ-を配列取得
$cat_now = get_the_category();
// 親の情報を$cat_nowに格納
$cat_now = $cat_now[0];
//category_parentを$parent_idに格納
$parent_id = $cat_now->category_parent;
if ( ! is_category($parent_id)) :
?>

<?php
	// カテゴリーアーカイブの場合
	$cats = get_the_category();
	if ( is_category() ) {
		// 現在のカテゴリーのIDを取得
		$cat_id = get_query_var( 'cat' );
		// 作成した関数からタグのオブジェクトを取得
		$posttags = my_tags_in_cat( $cat_id );
		// タグのオブジェクトを利用しタグ一覧を作成
		if( $posttags ){
			echo '<ul class="kanrentag-list">';
			foreach( $posttags as $tag ){
				echo '<li><a href="'. get_tag_link( $tag->term_id ) . '">' . $tag->name . '</a></li>';
			}
			echo '</ul>';
		}
	}
	?>

<?php endif; ?>

タグ一覧は、以下のような<ul> のリストタグで出力されます。

出力されるHTML

<ul class="kanrentag-list">
  <li>
    <a href="">tag1</a>
    <a href="">tag2</a>
    <a href="">tag3</a>
  </li>
</ul>