web-dev-qa-db-ja.com

年ごとに投稿をグループ化する

カスタム投稿タイプのアーカイブページで投稿を年ごとに分離するにはどうすればよいですか?

while ( have_posts() ) : the_post();

the_title();
the_post_thumbnail('thumb'); 

endwhile;

最終結果は次のようになります。

2016
- Title1
- Title2
- Title3
- Title4

2015
- Title1
- Title2
- Title3
- Title4

etc.
1
Boris Kozarac

この小さなスニペットが役に立ちます。

$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() );
    }
  }

このコードは、(現在のループ内の)すべての投稿を取得し、各投稿の年を取得し、各投稿のタイトルとパーマリンクをその年の配列にプッシュします。

7
Ehsaan