WordPress

WordPressの投稿一覧にカテゴリーとタグ(ターム)を取得・表示する方法

WordPressでブログなどの投稿一覧をサイトに表示する際に、その投稿につけたカテゴリ―やタグを表示する方法をご紹介します。

カテゴリ―とタグ(ターム)とは?

もしかするとこの記事に辿り着いた方は、そもそもカテゴリーとタグがどういうものなのか、をきちんと理解するところから始めた方が良いかもしれません。

WordPressでは標準の投稿だと1種類しか投稿メニューがないですが、カスタム投稿タイプというものを使うと、複数の投稿メニューを作ることができます。

カスタム投稿タイプでは、通常の投稿で言うところのカテゴリーやタグなどをタクソノミーと呼ばれる機能を使って付けることができます。それをカテゴリ―と名付けても、タグと名付けても、なんでもよいです。

詳しくは次の記事で解説しています。

カテゴリー、タグ、タクソノミー、タームの違いについてどこよりも分かりやすい解説を試みる

投稿一覧にタームを表示する方法

それでは本題ですが、カスタム投稿タイプの場合、
wp_get_object_terms( 投稿ID, タクソノミー名 )
を使って次のように取得し表示できます。

<ul>
   <?php
   $args = array(
   'post_type' => 'カスタム投稿タイプ名(スラッグ名)',
   );
   global $post;
   $the_query = new WP_Query($args);
   if ($the_query->have_posts()) :
   while ($the_query->have_posts()) : $the_query->the_post();
   ?> 
   <li>
      <h2><?php the_title($post->ID); ?></h2>
      <p><?php
        $terms = wp_get_object_terms($post->ID, 'タクソノミー名(スラッグ名)');
        foreach( $terms as $term):
           echo '<span class="cat">' . $term->name . '</span>';
        endforeach;
      ?></p>
   </li>
   <?php endwhile; endif; wp_reset_postdata(); ?>
</ul>

通常の投稿タイプの場合、以下が用意されています。
get_the_category()
get_the_tags()

このように通常の投稿タイプとカスタム投稿タイプでは用意されている関数も異なり、両方覚える必要が出てくるので、通常の投稿タイプを使うのはやめる、というのが得策です。

やめ方は次の記事を参照ください。

「カスタム投稿タイプ」を利用する場合は通常の「投稿」は使わないという選択肢

カテゴリ―とタグなど、複数のタクソノミーのタームを表示する場合

カテゴリ―とタグなど、複数のタクソノミーのタームを表示する場合は、次のようにタクソノミーごとにforeachを回して取得します。class名を変えることで、タクソノミーの種類をHTMLで判別できるので、CSSで見た目を変えることもできます。

<?php
   $cat_terms = wp_get_object_terms($post->ID, 'タクソノミー名(スラッグ名)');
   foreach( $cat_terms as $cat):
      echo '<span class="cat">' . $cat->name . '</span>';
   endforeach;
   $tag_terms = wp_get_object_terms($post->ID, 'タクソノミー名(スラッグ名)');
   foreach( $tag_terms as $tag):echo '<span class="tag">' . $tag->name . '</span>';endforeach;
?>

まとめ

自分用のメモでした。

著者のイメージ画像

株式会社BringFlower
稲田 高洋(Takahiro Inada)

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有、数年間ウェブアクセシビリティ基盤委員も務める。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。
2022年3月にBringFlowerを開業し、SEOコンサル、デザイン、ウェブ制作を一手に受ける。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。
プロフィール詳細