获取某个分类下所有文章相关的标签

list-tags-by-category

 

获取某个分类(Category)下所有文章相关的标签(TAGS)

首先获取分类下的所有文章:

			query_posts(array( 
				'post_type' => 'portfolio',
				'showposts' => -1,
				'tax_query' => array(
					array(
						'taxonomy' => 'portfolio-class',
						'terms' => $the_taxonomy,
						'field' => 'term_id',
					)
				),
				'orderby' => 'date',
				'order' => 'DESC' )
			);

去过所有posts对象:

$portfolio_vars = $wp_query->posts;

这样就可以获取到每个文章的 ID $portfolio_var->ID;

可以通过这个ID 获取到每个文章相关的标签:wp_get_post_terms($portfolio_var->ID, $taxonomy);

然后就可以循环取出各个标题的属性,存储到新的$relate_terms数组里

		$portfolio_vars = $wp_query->posts;
		foreach($portfolio_vars as $portfolio_var){
			//$portfolio_ids[] = $portfolio_var->ID;
			$term_list = wp_get_post_terms($portfolio_var->ID, $taxonomy);
			foreach($term_list as $term){
				$relate_terms[$term->term_id][id] 	= $term->term_id;
				$relate_terms[$term->term_id][slug] 	= $term->slug;
				$relate_terms[$term->term_id][name] 	= $term->name;
			}
		}

		//print_r($relate_terms);

$relate_terms[$term->term_id][id] = $term->term_id; 使用标题的ID作为key,可以自动替换掉重复的标题。

现在就可以循环输出标签了:

		if($relate_terms){
				echo '<div class="tags option-set portfolio-categories" id="filters" data-option-key="filter">';
				$filter[] =  '<a href="#filter" data-option-value="*" class="selected" title="All">All</a>';
				foreach ($relate_terms as $relate_term) {
					$filter[] = '<a href="#filter" data-option-value=".' . $relate_term[slug] . '" title="' . $relate_term[name] . '">' . $relate_term[name] . '</a>';
				}
				echo join(' | ', $filter);
				echo '</div>';
		}

这段代码试用于在 while( have_posts() ) : the_post();  endwhile;  输出文章之前,先显示某个分类下所有的标签! like this

33576802-c238-49dc-a560-63ef164a7292