指定したカテゴリー内で使用されるタグの一覧をショートコードによって表示するプログラムです。
リスト形式で出力されます。
特定のカテゴリー内で使用されているタグを一覧表示するプログラム
ショートコード
[tags_in_category category_id=”1″]の形式で書くことで表示されます。
category_idとは投稿→カテゴリーで表示されるidです。
PHPプログラム
以下のプログラムをfunctions.phpに追記します。場所はどこでも構いませんが、冒頭がよいでしょう。
テーマをアップデートすると削除される可能性がありますので、注意してください。
function get_tags_in_category($category_id) {
$args = array(
'cat' => $category_id,
'posts_per_page' => -1,
'fields' => 'ids',
);
$query = new WP_Query($args);
$tags = array();
if ($query->have_posts()) {
foreach ($query->posts as $post_id) {
$post_tags = wp_get_post_tags($post_id);
foreach ($post_tags as $tag) {
$tags[$tag->term_id] = $tag->name;
}
}
}
wp_reset_postdata();
return $tags;
}
function display_tags_in_category($atts) {
$atts = shortcode_atts(array(
'category_id' => get_queried_object_id(),
), $atts);
$tags = get_tags_in_category($atts['category_id']);
if (!empty($tags)) {
$output = '<h3>このカテゴリーのタグ</h3><ul>';
foreach ($tags as $tag_name) {
$output .= '<li>' . esc_html($tag_name) . '</li>';
}
$output .= '</ul>';
return $output;
} else {
return '<p>このカテゴリーにはタグがありません。</p>';
}
}
add_shortcode('tags_in_category', 'display_tags_in_category');
※$tags[$tag->term_id] = $tag->name;
の部分で、タグIDをキーに設定しているため、同じタグIDが複数回追加されることを防ぎます。
出力形式
<h3>このカテゴリーのタグ</h3>
<ul>
<li>タグ1</li>
<li>タグ2</li>
<li>タグ3</li>
</ul>
/code>