Group posts by year in loop

时间:2016-07-11 作者:Boris Kozarac

如何在存档页面中按年份为自定义帖子类型分隔帖子?

while ( have_posts() ) : the_post();

the_title();
the_post_thumbnail(\'thumb\'); 

endwhile;
最终结果如下:

2016
- Title1
- Title2
- Title3
- Title4

2015
- Title1
- Title2
- Title3
- Title4

etc.

1 个回复
最合适的回答,由SO网友:Ehsaan 整理而成

这个小片段可以帮助你。

$years = array();

  if( have_posts() ) {
    while( have_posts() ) {
      the_post();
      $year = get_the_date( \'Y\' );
      if ( ! isset( $years[ $year ] ) ) $years[ $year ] = array();
      $years[ $year ][] = array( \'title\' => get_the_title(), \'permalink\' => get_the_permalink() );
    }
  }
此代码获取所有帖子(在当前循环中),获取每个帖子的年份,将每个帖子标题和永久链接推送到其年份数组。

相关推荐

GET_POSTS查询大约需要40秒来执行

我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next