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;
?>
まとめ
自分用のメモでした。