WordPress

WordPressの投稿が属するカテゴリーとタグをそれぞれ分けて取得する方法

WordPressで記事一覧を表示する際や、記事の詳細ページに、その記事が属するカテゴリーやタグを表示したいという場合があると思います。

その時に、それぞれ分けて取得し、カテゴリーはカテゴリーの見た目で、タグはタグの見た目で表示するという方法をご紹介します。

カテゴリーとタグとは?

カテゴリーもタグも、カスタム投稿タイプにおいてはカスタムタクソノミーの1種です。ここでは、newsというカスタム投稿タイプがあり、news_catというカスタムタクソノミーと、news_tagというカスタムタクソノミーがある場合に、それぞれ分けて取得する方法をご紹介します。

カテゴリーとタグについてはややこしいので、よくご存じでない方は次の記事を参照ください。

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

カテゴリーとタグをそれぞれ分けて取得するとは?実施内容について

例えば表示内容としては次のように、記事ごとにカテゴリーとタグを示すということをします。

利用する関数「wp_get_object_terms」

利用する関数は「wp_get_object_terms」です。

関数リファレンス/wp get object terms

<?php wp_get_object_terms( 投稿ID, タクソノミー名, $args ); ?>

コード例

以下の記述で、
カテゴリーは

<span class="cat">カテゴリー名</span>

タグは

<span class="tag">タグ名</span>

で記事ごとに表示されるので、CSSでカテゴリーとタグを見え方を分けて表示ができます。

<?php
$args = array(
    'post_type' => 'news',
    'orderby' => 'date',
    'order' => 'DESC'
);
global $post;
$the_query = new WP_Query($args);
if ($the_query->have_posts()): ?>
<ul class="topic-inner">
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
   <li>
      <h3><?php the_title($post->ID); ?></h3>
      <p class="cats_tags">
      <?php
      $terms = wp_get_object_terms($post->ID,'news_cat');
      foreach( $terms as $term):echo '<span class="cat">' . $term->name . '</span>';endforeach;
      $terms = wp_get_object_terms($post->ID,'news_tag');
      foreach( $terms as $term):echo '<span class="tag">' . $term->name . '</span>';endforeach;
      ?>
      </p>
  </li>
<?php endwhile; endif; wp_reset_postdata(); ?>
</ul>

カテゴリーとタグの使い分けについて

デフォルトの投稿タイプだと、カテゴリーは階層を持たせることができるのに対して、タグは階層を持たせることができないという違いがあります。

カスタム投稿タイプでは、そこは設定次第なので、実質的には変わりません。

例えば食品のリストがあった時に、産地を都道府県別にカテゴリーで分けて、出荷時期をタグで分けるというような使い方ができます。

SEOのことを踏まえて考えるべきカテゴリーとタグの使い方

カテゴリーは、基本的に1記事1つにすることを推奨します。1記事に複数のカテゴリーを付けても、パンくずリストではどちらかのカテゴリーが表示されてしまうということがあります。また、URLにカテゴリー名を表示させている場合も同様です。URLにカテゴリー名を表示させている場合には、カテゴリーを変えるとURLが変わってしまうということも起きてしまいます。

SEOのためのカテゴリー分け方法とカテゴリーページ設け方

カテゴリーもタグも、付ければ付けるほど、taxonomyページが増えているということを把握しておくべきです。低品質なページになりがちなので、noindexをつけるという対処もありますが、SEOのことを考えながらタグの付けるのは難しいものです。

制作者がSEOのプロでないと、制御が効かなくなるため当方は基本的にタグの利用は推奨していません。

よく、タグをたくさんつけておくとサイトの回遊率が高くなるためSEO的にも良いということを言っている記事を見ますが、無暗にタグが付けられたブログは、むしろ回遊率は悪くなるのではないかと考えています。

ユーザーのエンゲージメントを高めたければ、ユーザビリティの向上を念頭に置くべきです。そう考えれば、タグを無暗に付けるという選択肢にはならないはずです。

まとめ

カテゴリーとタグを分けて表示する方法をご紹介しました。

著者のイメージ画像

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

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