Go to top Go to bottom

投稿に付けたタグを取得するには、get_the_tags()を使います。戻ってくる値はタグの配列です。

投稿に付けたタグを配列で取得する

投稿に付けたタグを取得するには、次のようにします。

<?php $tags = get_the_tags(); ?>

この関数はget_the_category()と同様、引数に投稿のIDを渡せば、WordPressループの外でも使うことができます。IDを指定しない場合は、現在の投稿が使われれます。

この関数はWP Termオブジェクトの配列を返します。この点もget_the_category()と同じです。試しにログで出力すると、次のような結果が得られます。

array (
  0 => 
  WP_Term::__set_state(array(
     'term_id' => 8,
     'name' => '夜',
     'slug' => '%e5%a4%9c',
     'term_group' => 0,
     'term_taxonomy_id' => 8,
     'taxonomy' => 'post_tag',
     'description' => '',
     'parent' => 0,
     'count' => 1,
     'filter' => 'raw',
  )),
  1 => 
  WP_Term::__set_state(array(
     'term_id' => 9,
     'name' => '快晴',
     'slug' => '%e5%bf%ab%e6%99%b4',
     'term_group' => 0,
     'term_taxonomy_id' => 9,
     'taxonomy' => 'post_tag',
     'description' => '',
     'parent' => 0,
     'count' => 1,
     'filter' => 'raw',
  )),
)

4行目のterm_id(タグのID)、5行目のname(タグの名前)、12行目のcount(そのタグが付けられている投稿の数)をよく使用します。get_the_category()と比較すると、タグのほうが項目は少ないですが、内容は同じであることに気づくと思います。

タグの配列を用いた例

get_the_category()の例とあまり変わりませんが、the_tags()では実現できない、タグの配列を使用した例を示してみます。

タグの名前だけを表示する

<?php 
  $tags = get_the_tags();
  foreach ( $tags as $tag ) {
    echo '<span>' . $tag->name . '</span>';
  }
?>

出力すると、タグの名前がスペースなしで表示されます。間をあけるにはspanにクラスを付けてcssで調整してください。もしセパレータを入れたい場合は、次のようにします。

<?php
  $html       = '';
  $separator  = '<span> / </span>';
  $tags       = get_the_tags();

  foreach ( $tags as $tag ) {
    $html .= '<span>' . $tag->name . '</span>' . $separator;
  }

  $html = rtrim( $html, $separator );

  echo $html;
?>

3行目を変更すれば区切り文字を変更することができます。

投稿に付けたタグのリンクを1つだけ表示する

the_tags()ではすべてのタグを表示しますが、1つだけ表示したい場合は次のようにします。

<?php
  $tags = get_the_tags();
  if ( !empty( $tags ) ) {
    printf(
      '<a href="%s">%s</a>',
      get_tag_link( $tags[0]->term_id ),
      $tags[0]->name
    );
  }
?>

投稿にはタグが付けられていない場合もありますので、上の3行目のようにタグの存在確認を忘れないようにしてください。

なお、6行目のget_the_tag_link()はタグのIDを渡すと、そのタグのアーカイブページへのURLを返してくれる関数です。