WEB制作、マーケティングに関する情報をお届けします。ホームページ制作会社、テラのブログ

【PHP8.3エラー対応済み】ワードプレス、タグの取得と出力一覧。

タグ:

WordPress(ワードプレス)でよく使用するタグの取得と表示方法をまとめました。
PHP8.3エラー対応済みでそのままコピペして使用いただけます。
タグを取得する関数は複数あります。

  • get_tags()
  • get_terms()
  • wp_tag_cloud()

今回はget_tags()で取得・表示させる方法を紹介します。

「ループ外」で取得・表示する方法

記事数カウント・リンク付き

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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><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><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>';
    }
    echo '</ul>'; // リストの終了タグ
} else {
    // タグが取得できない場合のメッセージ
    echo '<p>タグが見つかりませんでした。</p>';
}
?>

カウントなし・リンクなし

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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 // 全てのタグを取得する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
    // 全てのタグを取得する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>';
    }
?>

「ループ内(記事内)」でタグの一覧を取得する

記事数カウント・リンク付き

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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 // 現在の投稿に関連する全てのタグを取得 $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
    // 現在の投稿に関連する全てのタグを取得
    $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>'; // リストの終了タグ
    }
?>

カウントなし・リンクなし

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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)) { 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>'; // リストの終了タグ
    }
?>

タグを一つだけ取得する方法

複数のタグを出力するとレイアウト崩れの原因になったりすることがあります。
タグを一つだけ取得・表示したいという場面も稀にあります。
以下はタグを一つだけ取得する方法です。

カウント・リンク付き

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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 // 現在の投稿に関連する全てのタグを取得する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
    // 現在の投稿に関連する全てのタグを取得する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>';
    }
?>

カウントなし・リンクなし

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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 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
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;
?>た

タグを任意の数取得

以下は記事数の多いものから順にタグを任意の数で出力する場合のコードです。

記事数カウント・リンク付き

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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><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><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . ' (' . $tag->count . ')</a></li>';
        }
        echo '</ul>'; // リストの終了タグ
    } else {
        // タグが取得できない場合のメッセージ
        echo '<p>タグが見つかりませんでした。</p>';
    }
?>

記事数カウントなし・リンクなし

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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>';
}
?>
<?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>'; } ?>
<?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_tags」と「get_the_tags」の違いについて

get_the_tagsは現在の投稿のタグ情報を取得します。
逆にget_tagsは投稿以外のタグ全体を取得します。
ループ外で使用する際はget_tags、ループ内で投稿の一覧を取得する際はget_the_tagsを使用すると覚えておくといいです。

表示できるパラメーターの一覧

タグの情報を取得・表示する際にスラッグだけを取得したい、文字列だけを取得したい時があると思います。
その場合は取得したデータからパラメーターを指定して表示することができます。
以下、一覧です。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$tag_id = $tag->term_id; //タグID
$tag_name = $tag->name; //タグ名
$tag_slug = $tag->slug; //スラッグ
$tag_count = $tag->count; //タグが関連づけられている記事数
$tag_description = $tag->description; //タグの説明
$tag_id = $tag->term_id; //タグID $tag_name = $tag->name; //タグ名 $tag_slug = $tag->slug; //スラッグ $tag_count = $tag->count; //タグが関連づけられている記事数 $tag_description = $tag->description; //タグの説明
$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()などを使いながら実際にどんなデータが取れているのかというのを確認するとトラブルが起きた時も早期の原因究明につながります。

テラ合同会社(東京都)

テラは2014年に東京都でスタートアップしたホームページ制作会社です。ホームページ制作以外にも広告運用、マーケティング、ブランディング、印刷物など幅広い領域をサポートしています。
コーポレートサイトはこちらをご覧ください。