記事ページやアーカイブページでカスタム投稿を出力する際に、投稿に紐づくタームを一覧で出力する方法をご紹介いたします。
このように、投稿に紐づくタームを一覧で出力します。
投稿に紐づくタームを出力する方法(リンクなし)
<ul>
<?php $terms = get_the_terms($post->ID, 'カスタムタクソノミーのスラッグ'); ?>
<?php if($terms): ?>
<?php foreach($terms as $term): ?>
<?php echo '<li>'.$term->name.'</li>'; ?>
<?php endforeach; ?>
<?php endif; ?>
</ul>
投稿に紐づくタームを出力する方法(リンクあり)
<ul>
<?php $terms = get_the_terms($post->ID, 'カスタムタクソノミーのスラッグ'); ?>
<?php if($terms): ?>
<?php foreach($terms as $term): ?>
<?php echo '<li><a href="'.get_term_link($term->slug,'カスタムタクソノミーのスラッグ').'">'.$term->name.'</a></li>'; ?>
<?php endforeach; ?>
<?php endif; ?>
</ul>
補足点
1)「get_the_terms」で取得したターム一覧は、<li>タグで出力されるため、外側を<ul>タグで囲んであげてください。
2)if文の書き方は、4種類ほどありますが、基本的には、上記のように閉じカッコを毎回書く方法を採用しております。
(*個人的に後から見やすいことと、この書き方がなんとなくカッコ良いからです。)
3)「<?php if($terms): ?>」での条件分岐は不要ではと思いましたが、タームを付けていない記事の場合、画面が真っ白(エラー)になります。
(*絶対に、何かしらタームをつけるやり方もあるため、その時は不要かと)
投稿に紐づくタームを出力する方法(リンクあり)+カスタムタクソノミーが複数ver
<ul>
<?php $terms = get_the_terms($post->ID, array('カスタムタクソノミーのスラッグ','カスタムタクソノミーのスラッグ')); ?>
<?php if($terms): ?>
<?php foreach($terms as $term): ?>
<?php echo '<li><a href="'.get_term_link($term->slug,'カスタムタクソノミーのスラッグ').'">'.$term->name.'</a></li>'; ?>
<?php endforeach; ?>
<?php endif; ?>
</ul>
今回は以上です!