标签不依赖于类别,它们是独立的。说到这里,让某个特定类别中的所有标签都处于使用状态的唯一方法是浏览该类别中的每个帖子,并获取每个帖子的标签
在WordPress中没有本地的方法可以做到这一点。原因是标签不依赖于类别,它们是分开的。说到这里,让某个特定类别中的所有标签都在使用的唯一方法是浏览该类别中的每个帖子,并获取每个帖子的标签。
原始来源:详情
我已经编写了一个快速函数来实现这一点。
(包括子类别和帖子中的所有标签)
把这个函数放到你的functions.php文件里。
function get_tags_in_use($category_ID, $type = 'name'){ // Set up the query for our posts $my_posts = new WP_Query(array( 'cat' => $category_ID, // Your category id 'posts_per_page' => -1 // All posts from that category )); // Initialize our tag arrays $tags_by_id = array(); $tags_by_name = array(); $tags_by_slug = array(); // If there are posts in this category, loop through them if ($my_posts->have_posts()): while ($my_posts->have_posts()): $my_posts->the_post(); // Get all tags of current post $post_tags = wp_get_post_tags($my_posts->post->ID); // Loop through each tag foreach ($post_tags as $tag): // Set up our tags by id, name, and/or slug $tag_id = $tag->term_id; $tag_name = $tag->name; $tag_slug = $tag->slug; // Push each tag into our main array if not already in it if (!in_array($tag_id, $tags_by_id)) array_push($tags_by_id, $tag_id); if (!in_array($tag_name, $tags_by_name)) array_push($tags_by_name, $tag_name); if (!in_array($tag_slug, $tags_by_slug)) array_push($tags_by_slug, $tag_slug); endforeach; endwhile; endif; // Return value specified if ($type == 'id') return $tags_by_id; if ($type == 'name') return $tags_by_name; if ($type == 'slug') return $tags_by_slug; }
然后,当您要获取特定类别的标签时,请像下面这样调用此函数:
// First paramater is the category and the second paramater is how to return the tag (by name, by id, or by slug) // Leave second paramater blank to default to name $tags = get_tags_in_use(59, 'name');
希望这可以帮助。
编辑:
这是您需要与其他功能结合使用的功能:
function tag_cloud_by_category($category_ID){ // Get our tag array $tags = get_tags_in_use($category_ID, 'id'); // Start our output variable echo ''; // Cycle through each tag and set it up foreach ($tags as $tag): // Get our count $term = get_term_by('id', $tag, 'post_tag'); $count = $term->count; // Get tag name $tag_info = get_tag($tag); $tag_name = $tag_info->name; // Get tag link $tag_link = get_tag_link($tag); // Set up our font size based on count $size = 8 + $count; echo ''; echo ''.$tag_name.''; echo ' '; endforeach; echo ''; }
因此,您可以像下面这样简单地使用此功能:
tag_cloud_by_category($cat_id);