【PHP8.3エラー対応済み】ワードプレス、タグの取得と出力一覧。
カテゴリ:WEB制作
タグ:
WordPress(ワードプレス)でよく使用するタグの取得と表示方法をまとめました。
PHP8.3エラー対応済みでそのままコピペして使用いただけます。
タグを取得する関数は複数あります。
- get_tags()
- get_terms()
- wp_tag_cloud()
今回はget_tags()で取得・表示させる方法を紹介します。
目次
「ループ外」で取得・表示する方法
記事数カウント・リンク付き
<?php // 全てのタグを取得するWordPress関数 $tags = get_tags(array( 'orderby' => 'count', // 記事数でソート 'order' => 'DESC' // 降順 )); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名、記事数、リンクを表示 echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>'; } echo '</ul>'; // リストの終了タグ } else { // タグが取得できない場合のメッセージ echo '<p>タグが見つかりませんでした。</p>'; } ?>
カウントなし・リンクなし
<?php // 全てのタグを取得するWordPress関数 $tags = get_tags(array( 'orderby' => 'count', // 記事数でソート 'order' => 'DESC' // 降順 )); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名のみ表示 echo '<li>' . $tag->name . '</li>'; } echo '</ul>'; // リストの終了タグ } else { // タグが取得できない場合のメッセージ echo '<p>タグが見つかりませんでした。</p>'; } ?>
「ループ内(記事内)」でタグの一覧を取得する
記事数カウント・リンク付き
<?php // 現在の投稿に関連する全てのタグを取得 $tags = get_the_tags(); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名、記事数、リンクを表示 echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>'; } echo '</ul>'; // リストの終了タグ } ?>
カウントなし・リンクなし
<?php // 現在の投稿に関連する全てのタグを取得するWordPress関数 $tags = get_the_tags(); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名のみ表示 echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>'; } echo '</ul>'; // リストの終了タグ } ?>
タグを一つだけ取得する方法
複数のタグを出力するとレイアウト崩れの原因になったりすることがあります。
タグを一つだけ取得・表示したいという場面も稀にあります。
以下はタグを一つだけ取得する方法です。
カウント・リンク付き
<?php // 現在の投稿に関連する全てのタグを取得するWordPress関数 $tags = get_the_tags(); if (!empty($tags)) { // 最初のタグを表示 2つめなら[1], 3つめなら[2] $tag = $tags[0]; // タグ名、記事数、リンクを表示 echo '<p><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></p>'; } ?>
カウントなし・リンクなし
<?php if (have_posts()) : while (have_posts()) : the_post(); // 現在の投稿に関連する全てのタグを取得 $tags = get_the_tags(); if (!empty($tags)) { // 最初のタグを表示 2つめなら[1], 3つめなら[2] $tag = $tags[0]; // タグ名のみ表示 echo '<p>' . $tag->name . '</p>'; } endwhile; endif; ?>た
タグを任意の数取得
以下は記事数の多いものから順にタグを任意の数で出力する場合のコードです。
記事数カウント・リンク付き
<?php // 上位5個のタグを取得 $tags = get_tags(array( 'orderby' => 'count', // 記事数でソート 'order' => 'DESC', // 降順 ASCなら昇順 'number' => 5 // 取得するタグの数を指定 )); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名、記事数、リンクを表示 echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>'; } echo '</ul>'; // リストの終了タグ } else { // タグが取得できない場合のメッセージ echo '<p>タグが見つかりませんでした。</p>'; } ?>
記事数カウントなし・リンクなし
<?php // 上位5個のタグを取得 $tags = get_tags(array( 'orderby' => 'count', // 記事数でソート 'order' => 'DESC', // 降順 ASCなら昇順 'number' => 5 // 取得するタグの数を指定 )); // 取得したタグが空でない場合 if (!empty($tags)) { echo '<ul>'; // リストの開始タグ // 各タグをループ処理 foreach ($tags as $tag) { // タグ名のみ表示 echo '<li>' . $tag->name . '</li>'; } echo '</ul>'; // リストの終了タグ } else { // タグが取得できない場合のメッセージ echo '<p>タグが見つかりませんでした。</p>'; } ?>
get_the_tagsは現在の投稿のタグ情報を取得します。
逆にget_tagsは投稿以外のタグ全体を取得します。
ループ外で使用する際はget_tags、ループ内で投稿の一覧を取得する際はget_the_tagsを使用すると覚えておくといいです。
表示できるパラメーターの一覧
タグの情報を取得・表示する際にスラッグだけを取得したい、文字列だけを取得したい時があると思います。
その場合は取得したデータからパラメーターを指定して表示することができます。
以下、一覧です。
$tag_id = $tag->term_id; //タグID $tag_name = $tag->name; //タグ名 $tag_slug = $tag->slug; //スラッグ $tag_count = $tag->count; //タグが関連づけられている記事数 $tag_description = $tag->description; //タグの説明
term_id | タグID |
name | タグ名 |
slug | スラッグ |
count | タグが関連づけられている記事数 |
まとめ
以上、タグの取得と表示に関するまとめでした。
タグに関しては以下を使用できればほとんどの場面で通用するでしょう。
- get_tags()
- get_terms()
これで欲しいタグの情報はほぼ全てと言っていいほど網羅できますので、あとはデータを抽出するだけです。
もし、迷ったときはvar_dump()などを使いながら実際にどんなデータが取れているのかというのを確認するとトラブルが起きた時も早期の原因究明につながります。