0

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

2 回答 2

1

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

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

于 2013-03-26T04:50:02.070 回答
0

您可能需要考虑以不同的方式进行操作,因为发布元数据将是实际有效完成您想要的更好的选择。

尽管无论您是否真的想使用分类法,您都需要根据获取分类法列的查询来执行它,并且您可以从那里显示它。

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

于 2013-03-17T05:54:24.733 回答