如何用标题分类Wordpress查询结果?

时间:2013-03-16 13:43:52

标签: wordpress custom-post-type custom-taxonomy

我有一个wordpress自定义帖子类型的“奖项”,它有一个“奖励年”的自定义分类。我正在尝试编写一个将它们全部列出的查询,但是按年份对它们进行分组,并将年份放在标题中。例如,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

2 个答案:

答案 0 :(得分:1)

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

请注意,query_posts()的这种使用通常不受欢迎;请参阅该职能的法典条目。

答案 1 :(得分:0)

你可能想要考虑采用不同的方式,因为post meta将是一个更好的选择,可以有效地实现你想要的东西。

虽然不管你是否真的想要使用分类法,你都需要根据一个带有分类列的查询来完成它,你可以从那里显示它。

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