今回は記事のタイトルまわりでよく使用される「その記事が所属するカテゴリー(ターム)を複数表示させる」方法についてです。
複数のカテゴリーに登録されている場合に使用できます。
目次
リンクなしの場合のコード
早速コードを書いていきます。
まずはリンクなしバージョンです。
<?php // タグ表示
$cp_slug = esc_html(get_post_type_object(get_post_type())->name);
if( $cp_slug == 'post_type' ): // ポストタイプ名
?>
<div>
<?php
if ($terms = get_the_terms($post->ID, 'custom-post-taxonomy')) { //タクソノミー名
foreach ( $terms as $term ) {
echo '<span>' .$term->name. '</span>';
}
}
?>
</div>
<?php endif; ?>
実際の出力は下記です。
<div>
<span>所属ターム名</span>
<span>所属ターム名</span>
<span>所属ターム名</span>
</div>
複数のタームに所属していても、ちゃんとすべて表示されます。
リンクありの場合のコード
リンクありの場合は、もっと簡単に1行です。
<div>
<?php echo get_the_term_list($post->ID, 'custom-post-taxonomy'); ?>
</div>
出力結果は下記です。
<div>
<a href="xxx">所属ターム名</a>
<a href="xxx">所属ターム名</a>
<a href="xxx">所属ターム名</a>
</div>
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_the_term_list
リンクありで、aタグ内にclass名など追加したい場合
<?php // タグ表示
$cp_slug = esc_html(get_post_type_object(get_post_type())->name);
if($cp_slug=='post_type'):
?>
<div>
<?php
$terms = get_the_terms($post->ID,'custom-post-taxonomy');
foreach( $terms as $term ):
$term_link = get_term_link( $term );
?>
<a href="<?php echo $term_link; ?>" class="className"><?php echo $term->name; ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
リンクありで、リストにしたい場合
<?php // タグ表示
$cp_slug = esc_html(get_post_type_object(get_post_type())->name);
if($cp_slug=='post_type'):
?>
<ul>
<?php
$terms = get_the_terms($post->ID,'custom-post-taxonomy');
foreach( $terms as $term ):
$term_link = get_term_link( $term );
?>
<li>
<a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
コメント