タグはその記事のキーワードを表すためのもの。そして目当ての記事を探しやすくする役割があります。
カテゴリーより細かく記事を分類でき、カテゴリーのように一覧で表示させることもできるため使用する人は多いと思います。
タグは記事を表示させるときにセットで表示させたいものです。そんな時に役立つ「その記事のタグを取得・表示させる」メモです。
目次
一覧ページでタグ名を表示させる【single_tag_title()】
archive.php といったファイルでタグ名を表示させる場合は single_tag_title()
でタグ名を表示することができます。
<?php single_tag_title(); ?>
登録されているタグ全てを取得&表示【get_tags()】
サイドバーやヘッダー・フッターなど共通部分にタグ一覧を表示させたい時に、登録されているタグを一気に取得する get_tags()
が使えます。
この関数で投稿にある全てのタグ情報を取得し、表示できます。
リンクをつけたい場合は get_tag_link()
も必要です。
<?php
$all_tags = get_tags();
foreach($all_tags as $tag) :
$tag_slug = get_tag_link($tag->term_id);
$tag_name = $tag->name;
?>
<ul>
<li><a href="<?php echo $tag_slug; ?>"><?php echo $tag_name; ?></a></li>
</ul>
<?php endforeach; ?>
$tag_name = $tag->name;
この部分で「タグ名」を取得しています。他にもスラッグやID、タグの説明なども取得できます。
// タグのスラッグを取得
$tag->slug;
// タグのIDを取得
$tag->term_id;
// タグの説明を取得
$tag->description;
// タグが付いている投稿数を取得
$tag->count;
タグがついている投稿数を表示させる
countプロパティを利用することで、タグの記事数も表示させることができます。
<?php
$all_tags = get_tags();
foreach($all_tags as $tag) :
$tag_slug = get_tag_link($tag->term_id);
$tag_name = $tag->name;
$tag_count = $tag->count;
?>
<ul>
<li><a href="<?php echo $tag_slug; ?>"><?php echo $tag_name; ?>(<?php echo $tag_count; ?>)</a></li>
</ul>
<?php endforeach; ?>
タグの順序を変更して表示
get_tags()
の引数にパラメータを指定して、表示順序などを変更することもできます。
<?php
// 記事数の多いタグから表示させる
$args = array(
'orderby' => 'count',
'order' => 'DESC',
);
$all_tags = get_tags($args);
?>
<ul>
<?php
foreach($all_tags as $tag):
$tag_slug = get_tag_link($tag->term_id);
$tag_name = $tag->name;
?>
<li><a href="<?php echo $tag_slug; ?>"><?php echo $tag_name ?></a></li>
<?php endforeach; ?>
</ul>
タグの順序をシャッフルして表示
毎回同じ順番ではなく、ランダムにタグを表示させたい場合、shuffle()
というPHP関数を使って表示順序をシャッフルさせることができます。
<?php
$all_tags = get_tags();
// このコードを追加
shuffle($all_tags);
?>
<ul>
<?php
foreach($all_tags as $tag):
$tag_slug = get_tag_link($tag->term_id);
$tag_name = $tag->name;
?>
<li><a href="<?php echo $tag_slug; ?>"><?php echo $tag_name ?></a></li>
<?php endforeach; ?>
</ul>
このように記述することでリロードする度にタグの表示順序変わります。
shuffle() の参照 → PHP: shuffle – Manual
各記事のタグを取得&表示
記事一覧や記事の詳細ページでタグを表示させたい場合、いくつか方法があります。表示のさせ方によって使い分けてみてください。
リンク付きのタグ名を表示させたい場合は the_tags()
というテンプレートタグが一番簡単です。
<?php the_tags(); ?>
上記のように書くだけでリンク付きのタグが自動表示されます。
【表示例】
タグ: タグ01, タグ02
the_tags()
の詳細はこちら↓
【関連記事】the_tags() で投稿のタグ情報を出力
the_tags()
は簡単で便利なのですが、その分融通が効かないところもあります。そういった場合は get_the_tags()
を使います。
archive.php だったらこのような感じで使います。
<ul>
<?php while(have_posts()) : the_post(); ?>
<li style="list-style: none;">
<h2><?php the_title(); ?></h2>
<?php
$post_tags = get_the_tags();
if ($post_tags):
foreach($post_tags as $tag) {
$post_tag_slug = get_tag_link($tag->term_id);
$post_tag_name = $tag->name;
}
?>
<ul>
<li><a href="<?php echo $post_tag_slug; ?>"><?php echo $post_tag_name; ?></a></li>
</ul>
<?php endif; ?>
</li>
<?php endwhile; ?>
</ul>
ここではリンク付きのコードを書きましたが、リンクが不要であれば $post_tag_slug
の部分や aタグ
のところを削除すれば使いまわせると思います。
条件分岐がないと、タグが全ての投稿記事についていない場合エラーになってしまうので、if文はつけるようにしておきましょう。(タグは全ての記事に必ずつけるのであればif文はなくても大丈夫ですが、付け忘れもあると思うのであった方が安全です)