WordPress 記事のタグ情報を取得する方法まとめ

Pocket

wordpressでカテゴリーごとに最新記事の一覧をまとめたりするのと同じように、タグでも同様に記事一覧を取得したりすることがあります。

多くの場合はtag.phpを作ってしまえば対応可能なのですが、まれに別のテンプレート(トップなど)に特定のタグの最新記事一覧を作成することがあります。

この記事ではそういった場合にも対応できるようにwordpressのタグ情報を自由自在に取得・出力する方法を紹介します。

現在の記事のタグ名を取得する方法

現在のタグページのタグ名を取得するには以下の1行でOK。タグ名を表示せず変数に渡す場合はパラメータにfalse指定すればOK。

//タグ名を取得して出力

<?php single_tag_title(); ?>.

//変数にタグ名を渡す方法
<?php $current_tag = single_tag_title("", false); ?>

現在の記事のタグIDを取得する方法

現在の投稿記事のタグIDを取得するには以下のようにします。

//ループを回してタグを取得する
<?php
$posttags = get_the_tags();
if ($posttags):
foreach($posttags as $tag): ?>

<?php echo $tag->term_id; ?>

<?php endforeach; endif;?>
?>

このget_the_tags()では同様にして以下の情報を取得できます。このテンプレートタグはループ内でのみ使用可能です。

  • term_id : タグのID
  • name : タグ名
  • slug : スラッグ
  • term_group : タググループ(あれば)
  • description : タグの説明
  • count : このタグの使用回数

wordpressのループ外でタグ一覧を取得する

先ほどはループ内でその記事のタグ一覧を取得する方法でしたが、こちらはループ外でタグ一覧の情報を取得する方法です。

ループ外でタグ一覧を取得するには、get_tags()を使用します。()内に設定できるパラメータは公式codexのこちらをご覧下さい。取り出せるデータは先ほどのリストと同じです。

//ループ外でタグ一覧を取得
<?php
$tags = get_tags();
if ($tags):
foreach($posttags as $tag): ?>

//idからリンクを取得
<?php $tag_link = get_tag_link($tag->term_id); ?>

<a href='<?php echo $tag_link?>' title='<?php echo $tag->name ?>'>
  <?php echo $tag->name ?>
</a>

<?php endforeach; endif; ?>

特定のタグの最新記事一覧を取得する方法

WordPressのトップページなどで特定タグの最新記事一覧を取得したい場合があります。その場合は現在のページのタグを取得するのではなく、あらかじめデータベースからそのタグに関連づけられた投稿記事を取得します。

その場合はWP_query()を使って以下のように指定すればOKです。

//WP_queryにタグIDを投げる
<?php $my_query = new WP_Query('tag_id=13'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php endwhile; ?>
<?php wp_reset_postdata(); ?>

ちなみにWP_query($args)には書ききれないほど多くの条件を設定できるので公式codexのこちらをご覧下さい。

また、現在の記事のタグを取得しそのタグIDから記事一覧を取得することで、現在のタグの関連記事一覧を作ることもできます。

wordpressでタグ情報を取得する方法まとめ

WordPressではタグやカテゴリーの設定ができ、それらの取得方法も豊富に用意されています。

ここで紹介した方法でタグ情報の取得に関してはバッチリなはずです。

タグ情報の他にカテゴリーと投稿者情報の取得方法についてもまとめまてみたのでそちらも合わせてご覧下さい。