投稿が属するカテゴリー・タグを取得したい

WordPressの投稿が属するカテゴリーを取得したい時は、「get_the_category_list()」を使えば、リンク付きで表示してくれるので、重宝してます。

Codexでは下記の通り。

<?php get_the_category_list( $separator, $parents, $post_id );?>
  • $separator
    複数のカテゴリーを持っている時の区切り文字です。
    空欄にすると「post-categories」のクラスの付いたリスト形式で表示されます。
  • $parents
    親カテゴリの表示方法を指定できます。
  • $post_id
    取得する投稿のIDです。指定するとその投稿IDのカテゴリを表示します。

多分、区切り文字の指定だけしてあげれば問題ないはずです。

カンマ区切り
<?php echo get_the_category_list(',');?>
<a href="カテゴリのリンク" rel="category tag">カテゴリ</a>,<a href="カテゴリのリンク" rel="category tag">カテゴリ</a>
半角スペース区切り
<?php echo get_the_category_list(' ');?>
<a href="カテゴリのリンク" rel="category tag">カテゴリ</a> <a href="カテゴリのリンク" rel="category tag">カテゴリ</a>
spanで囲む
<?php echo '<span>'.get_the_category_list('</span><span>').'</span>';?>
<span><a href="カテゴリのリンク" rel="category tag">カテゴリ</a></span><span><a href="カテゴリのリンク" rel="category tag">カテゴリ</a></span>

タグの場合はget_the_tag_list()を使う

<?php $tag_list = get_the_tag_list( $before, $sep, $after );?>

「get_the_category_list()」と似ていますが、パラメーターが少し違います。

  • $before
    前に入れるテキスト。
  • $sep
    タグを区切る文字列。
  • $after
    後に入れるテキスト。を表示します。

「get_the_category_list()」と同じように、区切り文字の指定だけしてあげれば、いい感じで表示できます。

カンマ区切り
<?php echo get_the_tag_list('',',','');?>
<a href="タグのリンク" rel="category tag">タグ</a>,<a href="タグのリンク" rel="category tag">タグ</a>
半角スペース区切り
<?php echo get_the_tag_list('',' ','');?>
<a href="タグのリンク" rel="category tag">タグ</a> <a href="タグのリンク" rel="category tag">タグ</a>
リスト形式で表示
<?php echo get_the_category_list('<ul><li>','</li><li>','</li></ul>');?>
<?php echo '<ul><li>'.get_the_category_list('','</li><li>','').'</li></ul>';?>
<ul>
  <li><a href="タグのリンク" rel="category tag">タグ</a></li>
  <li><a href="タグのリンク" rel="category tag">タグ</a></li>
</ul>

補足

「get_the_category_list()」のパラメーターの説明を少ししておこうかなと思います。

$separator

空欄にすると「post-categories」のクラスの付いたリスト形式で表示されます。

<ul class="post-categories">
 <li>
  <a href="カテゴリのリンク" rel="category tag">カテゴリ</a>
 </li>
</ul>

リスト形式で表示されるとデザインを整えるのに、ひと手間かかるので、区切り文字をいれてしまう方が楽ですね。

$parents

自動で親カテゴリを表示してくれます。
‘multiple’を指定すると、リンク付きの親カテゴリも表示します。

<a href="親カテゴリへのリンク">親カテゴリ</a>
<a href="子カテゴリへのリンク">子カテゴリ</a>

‘single’を指定すると、リンク先は子カテゴリで親カテゴリを含んで表します。

<a href="子カテゴリへのリンク">親カテゴリ子カテゴリ</a>

一見、便利な気がしますが、意外と使わないかもしれません。
子カテゴリしか選択してない時はいいですが、親カテゴリも選択していると、親カテゴリが重複して表示されるので、よろしくありません。

子カテゴリしか選択してない

multiple
<a href="親カテゴリへのリンク">親カテゴリ</a>
<a href="子カテゴリへのリンク">子カテゴリ</a> 
single
<a href="子カテゴリへのリンク">親カテゴリ子カテゴリ</a>

親カテゴリも選択してる

multiple
<a href="親カテゴリへのリンク">親カテゴリ</a>
<a href="親カテゴリへのリンク">親カテゴリ</a>
<a href="子カテゴリへのリンク">子カテゴリ</a> 
single
<a href="親カテゴリへのリンク">親カテゴリ</a>
<a href="子カテゴリへのリンク">親カテゴリ子カテゴリ</a>

運用のルールを決めて使えば便利な気がしますが、多分使わないだろうな。