taxonomyページで子タームがある場合はターム情報を出力し、子タームがない場合は登録情報を出力する

  • facebook
  • このエントリーをはてなブックマークに追加
  • Twitter

備忘録として残します。

<?php $tax = get_queried_object();
$tax_name = $tax->taxonomy;
$term_id = $tax->term_id;
$check = get_term_children($term_id, $tax_name);

if($check): //子タームがある場合 ?>
<ul class="has_child">
<?php $termchildren = get_term_children($term_id, $tax_name);
	foreach($termchildren as $child){
		$term = get_term_by('id', $child, $tax_name);
		$term_id = $term->term_id;
		$term_link = get_term_link($term);
		$term_name = $term->name;
		$termchild_description = strip_tags(term_description($term_id));
		$termchild_description = wp_html_excerpt($termchild_description, 60);
		if(mb_strlen($termchild_description) < 60){
			$description_excerpt = $termchild_description;
		} else {
			$description_excerpt = $termchild_description.'…';
		} ?>
	<li><a href="<?php echo $term_link; ?>">
	<strong><?php echo $term_name; ?></strong><br>
	<span><?php echo $$description_excerpt; ?></span>
	</a></li>
<?php } ?>
</ul>

<?php else: //子タームがない場合 ?>
<ul class="no_child">
<?php while(have_posts()): the_post();
	$child_description = mb_substr(get_the_excerpt(), 0, 60);
	if(mb_strlen($child_description) < 60) {
		$child_description_excerpt = $child_description;
	} else {
		$child_description_excerpt = $child_description.'…';
	} ?>
	<li><a href="<?php the_permalink(); ?>">
	<strong><?php the_title(); ?></strong><br>
	<span><?php echo $child_description_excerpt; ?></span>
	</a></li>
<?php endwhile;
endif; ?>

子タームの有無を判断する方法について解説

1行目:
get_queried_object() とは、情報オブジェクトを取得する関数です。taxonomy.php で使用しているので、ターム情報を取得してます。

2、3行目:
get_queried_object() で取得した情報より、タクソノミー名とタームIDを取得します。

4行目:
get_term_childrent() とは、指定した親タームに対して、それにぶらさがる子タームを取得する関数です。ここで値を取得できるかどうかで子タームの有無が判断できます。

6行目:
4行目で値を取得できた(子タームあり)場合のifです。

28行目:
4行目で値を取得できなかった(子タームなし)場合のifです。

前の記事

CSSでぼかし効果(ブラーエフェクト)をかける作例(レスポンシブ対応/画像の一部)

次の記事

Todoist ガントチャートコンバータ マニュアルを改訂版を公開しました。