カスタム投稿タイプのsingle.phpで、所属するカテゴリーを複数表示する(リンクなし、リンクあり)

今回は記事のタイトルまわりでよく使用される「その記事が所属するターム名を複数表示させる」方法についてです。

目次

リンクなしの場合のコード

早速コードを書いていきます。

<?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; ?>

‘post_type’にはポストタイプ名、’custom-post-taxonomy’にはタクソノミー名を入力します。

実際の表示は下記です。

<div>
  <span>所属ターム名</span>
  <span>所属ターム名</span>
  <span>所属ターム名</span>
</div>

複数のタームに所属していても、ちゃんと表示されます。

リンクありの場合のコード

リンクありの場合は、もっと簡単に1行です。

<div>
  <?php echo get_the_term_list($post->ID, 'custom-post-taxonomy'); ?>
</div>

‘custom-post-taxonomy’にはタクソノミー名を入力します。

出力結果は下記です。

<div>
  <a href="xxx">所属ターム名</a>
  <a href="xxx">所属ターム名</a>
  <a href="xxx">所属ターム名</a>
</div>

リンクありで、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; ?>
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次
閉じる