如何通过标题分类分离Wordpress查询结果



我有一个wordpress自定义帖子类型"awards",它有一个自定义分类"awardyear "。我试图写一个查询,将列出他们都出来,但组他们按年,并有一年的标题。例如,2010年以来的所有奖项将被组合在一起。以"2010"作为标题。这可能吗?我可以把它们都列出来,但是,它现在列出的都是每年以下的。下面是我当前的查询:

$taxonomy = 'awardyear';
$queried_term = get_query_var($taxonomy);
$terms = get_terms($taxonomy, 'slug='.$queried_term);
$args = array( 
'post_type' => 'awards',
'posts_per_page' => -1 ,
'awardyear' => $term->name,
'order_by' => 'awardyear',
'order' => 'ASC'    
 );
if ($terms) {
  foreach($terms as $term) {
    echo '<span class="award_year">' . $term->name . '</span> ';
    query_posts( $args );
// The Loop
while ( have_posts() ) : the_post();
    echo '<li style="list-style: none;">';
    echo '<a href="';
    the_permalink();
    echo '">';
    the_title();
    echo '</a>';
    echo '</li>';
endwhile;
// Reset Query
wp_reset_query();
  }
}

示例输出如下:

2010
Award Example Number 1
Award Example Number 2
2011
Award Example Number 1
Award Example Number 2
Award Example Number 3
Award Example Number 4
2012
Award Example Number 1
Award Example Number 2
Award Example Number 3

您的问题是$args['awardyear']$term被定义之前被设置一次,因此它本身是未定义的。将其从$args的定义中删除,并将$args['awardyear'] = $term->name;放在foreach循环的顶部。这样就可以正确地设置每一个过去。

请注意,这样使用query_posts()通常是不被允许的;

你可能要考虑用另一种方式来做,因为post meta将是一个更好的选择,可以有效地完成你想要的。

尽管无论您是否真的想使用分类法,您都需要基于一个查询来执行,该查询接受分类法列,并且可以从那里显示它。

参考:http://scribu.net/wordpress/sortable-taxonomy-columns.html

最新更新