LucyとRuby

WordPress 特定のカテゴリで使用しているタグを取得してリスト表示する処理

特定のカテゴリで使用しているタグを全て拾い出してリスト表示する処理の書き方を説明します。

カテゴリで使用しているタグだけ抜き出したい

本サイトのカテゴリーページでは、下図のようにそのカテゴリの記事で使用しているタグの一覧を表示しています。

タグリスト

カテゴリはかなりざっくりとした分類なので、もっと具体的なワードで記事を探すことができるようにするためにこのタグリストを表示しています。

一般的なブログサイトのサイドバーでは、タグの一覧が表示されていることがよくありますが、それだとタグの種類が多すぎて初めて訪問したビジターが目的のタグを見つけるのはほぼ無理です。

そこで、このサイトでは、カテゴリページではそのカテゴリで使用しているタグだけに限定して表示することで、余計なタグを排除しています。

そのやり方を下記に記載します。

やり方

「functions.php」と「カテゴリーページのテンプレート(php)」にそれぞれ以下のように記述します。

functions.php

指定したカテゴリに含まれるタグのみをリスト書き出しする関数をfunctions.phpに用意します。

function echo_related_tag_list($cat_id){
//引数で指定したカテゴリの投稿id(複数)を配列で取得・・・A
$post_ids = get_objects_in_term($cat_id, 'category');
//Aの投稿ID(複数)が使用しているタグ(複数)を取得
$terms = wp_get_object_terms($post_ids, 'post_tag');
//取得したタグをhtmlに一つずつ書き出し
echo '<ul>';
foreach($terms as $term){
echo '<li><a href="' . get_term_link($term->term_id, 'post_tag') . '">' . $term->name . '</a></li>';
}
echo '</ul>';
}

カテゴリーページのテンプレート

カテゴリページのテンプレート中に下記のようにカテゴリIDを取得・指定して上で用意した関数を呼び出します。

<?php
if(is_category()){
  $cat_id = get_query_var('cat');//カテゴリIDを取得(これはカテゴリページでのみ取得可能)
  echo_related_tag_list($cat_id);
}

以上でカテゴリーページで使用しているタグのリストをhtmlに出力できます。

post no. 958

Comments