WordPress – タグ一覧を取得する色々な方法

更新日:

タグ一覧を表示させるにはget_tags()を使用します。主にパラメータの設定では「最大件数」や「ソート順(ASC/DESC)」などがあり、その使用例をこの記事では紹介したいと思います。

全てのタグを一覧表示する

タグの一覧はとても簡単で、下記のコードだけで表示することができます。

<?php 
	$tags = get_tags();
	foreach($tags as $tag){
		echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
	}
?>

get_tags()の中身

$tag->name["name"]の情報を呼び出し、get_tag_link($tag->term_id)でID情報を取得し正しいURLをPHPの値として返しています。

array(5) {
  [0]=>
  object(WP_Term)#4247 (10) {
    ["term_id"]=>
    int(7)
    ["name"]=>
    string(11) "Hello World"
    ["slug"]=>
    string(11) "hello-world"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(7)
    ["taxonomy"]=>
    string(8) "post_tag"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(1)
    ["filter"]=>
    string(3) "raw"
  }
  [1]=>
  object(WP_Term)#4242 (10) {
    ["term_id"]=>
    int(6)
    ["name"]=>
    string(3) "PHP"
    ["slug"]=>
    string(3) "php"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(6)
    ["taxonomy"]=>
    string(8) "post_tag"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(1)
    ["filter"]=>
    string(3) "raw"
  }
....(省略)
}

#ハッシュタグみたいに表示

<?php 
	$tags = get_tags();
	foreach($tags as $tag){
		echo '<li><a href="' . get_tag_link($tag->term_id) . '">#' . $tag->name . '</a></li>';
	}
?>

特定のタグを除外する

まず除外したいタグのIDを調べます。「管理画面」→「投稿」→「タグ」にアクセスして除外したいタグにマウスをかざします。

すると上記の画像のように左下にURLが表示されます。そのURLの中にtag_ID=とあるのでその数字をコピーします。

..../wp-admin/term.php?taxonomy=post_tag&tag_ID=8&post_type=post....

除外したい場合excludeというパラメータを使用しますので、下記がその例となります。

$tags = get_tags(array('exclude' => '8'));
foreach($tags as $tag){
	echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
}

もし複数除外したい場合は,(カンマ)で指定できます。

$tags = get_tags(array('exclude' => '8,10'));
foreach($tags as $tag){
	echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
}

タグ一覧の表示件数を設定する

初期設定では投稿数がないタグ以外は全て表示するようになっています。すべてのタグを表示するのではなく上限数を決めたい場合は'number' => ''に数字を入れます。下記が例になります。

$tags = get_tags(array('number' => 4,));
foreach($tags as $tag){
	echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
}

タグ一覧をランダムで表示する

$tags = get_tags();
shuffle($tags);
$tags = array_slice($tags, 0, 10);
foreach($tags as $tag){
	echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
}

get_tags()にはランダムで出力するパラメータがないので、shuffle()関数を使い中身をシャッフルしarray_slice()で配列の一部を展開しています。