WordPress:タグのリンク/RSSフィードアドレスを取得する

WordPress

WordPressの個別記事画面(single.php)に、タグアーカイブのページアドレスと個別タグフィードのアドレスを表示させたよ。wp_tag_hogeとかで簡単に呼び出せるだろうとタカを括っていたのに、実は思った以上に大変な作業でした。

カギはget_tag_link関数とget_tag_feed_link関数

結論から言うと、タグアーカイブページのアドレスは"get_tag_link“関数、個別タグフィードのアドレスは"get_tag_feed_link"関数で取得可能です。

ただし、両関数とも引数にタグIDを渡さねばならず、加えて戻り値が文字列ではないので自前での画面表示が必要になります。

参考までにget_tag_feed_link関数はSimple Tagsのソースを追っかけていて見つけ、関数の使い方は『[覚書] 複数タグのアーカイブで、タグ情報一式を取得 | animal-taste.com』を参考にさせてもらいました。

サンプルコード

そこら辺を踏まえて、現在ウチのブログで使ってるコードはこんな感じですよ。注意:11行目の"</ul>" は先頭の'<'が日本語の’<’になっています。このコードをそのまま使うなら、適宜'<'に書き換えてご使用下さい。

< ?php $posttags = get_the_tags();
	if ($posttags) {
		echo '<ul>' ;
		foreach ($posttags as $tag) {
			$tagLink = get_tag_link($tag->term_id) ;
			$tagFeed = get_tag_feed_link($tag->term_id);
			echo '<li>タグ:「<a href="'.$tagLink.'" title="『'.$tag->name.'』関連記事を一覧表示">'.$tag->name.'</a>」に関する記事を一覧表示する' ;
			echo '<a href="'.$tagFeed.'" title="タグ『'.$tag->name.'』のRSS"><img src="https://www.hide10.com/images/rss.png" alt="RSS icon" width="14" height="14" /></a>' ;
			echo '</li>' ;
		}
		echo '</ul>' ;
	}
?>

各行の説明を日本語で書くとこんな感じ。

  1. get_the_tags関数で、現在表示しているページに定義づけられているタグ一覧を取得
  2. タグ一覧は取れた?
  3. ulタグ開始
  4. タグ一覧を全部表示するまで↓の処理を何回でもやるよ、ここから
  5. get_tag_link関数でタグアーカイブアドレスをゲット!
  6. get_tag_feed_link関数でタグRSSのアドレスをゲット!
  7. タグアーカイブアドレスのリンクを画面表示
  8. タグRSSのアドレスを画面表示
  9. liタグを閉じる
  10. タグ一覧を全部表示するまで↑の処理を何回でもやるよ、ここまで
  11. ulタグを閉じる
  12. ここまでif文
  13. ここまでPHP

おいらはsingle.php用に使ってるけど、必要なら他のアーカイブページからでも取得可能だと思います。実際の表示例は、この下の『よろしければ関連が高い他の投稿もお読み下さい』の下の方をご覧下さいませ。