我有一个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
答案 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