WordPressでカテゴリ一覧リストの様にタグ一覧リストを表示する方法


とある案件でカテゴリ一覧リストの様にタグ一覧リストを表示する必要があったので覚書。

WordPressではカテゴリ一覧を出す時には、
【wp_list_categories()】
という関数が用意されていて、問題無いのですが、タグ一覧を出す関数というのが無い模様。(探し切れていないだけかもしれませんが・・・)

なので、直接データベースにアクセスして何とか設置。
そのタグが含まれる投稿件数付きです。

WordPressのカテゴリ、タグ情報はデータベースの
・wp_terms
・wp_term_taxonomy
というテーブルに納められています。 (「wp_」の箇所はインストール時に指定した文字列になります。)

この内「wp_terms」にはカテゴリやタグの名前、スラッグ、ID(他のテーブルとの関連付け等にも使用)等のデータが、
「wp_term_taxonomy」には「wp_terms」のIDと紐づいた形で、そのIDのデータがカテゴリなのかタグなのかといった分類や、そのIDのカテゴリ・タグが含まれる投稿件数等がのデータが納められています。

タグは 「wp_term_taxonomy」の「taxonomy」の値が「post_tag」になる物になるので、投稿件数順に表示する場合は以下の様なソースになります。

<?php
$tagList = $wpdb->get_results($wpdb->prepare("
SELECT t.term_id,t.name,t.slug,tt.count
FROM $wpdb->terms AS t
JOIN $wpdb->term_taxonomy AS tt
USING(term_id)
WHERE tt.taxonomy = ‘post_tag’
ORDER BY tt.count DESC
"));
foreach ($tagList as $value):
?>
<a href="/tag/<?php echo $value->slug; ?>/"><?php echo $value->name; ?></a> (<?php echo $value->count; ?>)
<?php endforeach;?>

※パーマリンクの設定が「/tag/【タグのスラッグ】/」になっている事を想定。

これで【wp_list_categories()】を使用してカテゴリ一覧表示をした時と同じ様な表示でタグの一覧表示ができるはずです。