【WordPress】投稿が存在する年を取得する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
WordPressで投稿が存在する年を取得する方法をご紹介したいと思います!
やりたい事は単純で、投稿が存在する年だけを抽出して年毎に分けた記事を表示する、です。本記事では投稿が存在する年の取得方法だけのご紹介となります。
SQL文を使えば簡単にできると思いますが、私はSQLには詳しくないため、本記事ではWP_Queryを使って投稿が存在する年を取得しています。
では、さっそく解説していきます!
投稿が存在する年を取得する
PHP
$args = array( 'post_type' => 'post', 'orderby' => 'date', 'order' => 'asc', 'posts_per_page' => -1 ); $query = new WP_Query($args); if( $query->have_posts() ) { $year = array(); while ( $query->have_posts() ) { $query->the_post(); if ( get_the_date('Y') ){ array_push( $year, get_the_date('Y') ); } } wp_reset_postdata(); }
上記を実行すると以下の画像のような配列が出力されます。
指定した投稿タイプの全投稿から年の値が取得されます。重複した年も含まれているため、数が多くなっています。ここから重複した年の値を削除します。
PHP
$args = array( 'post_type' => 'post', 'orderby' => 'date', 'order' => 'asc', 'posts_per_page' => -1 ); $query = new WP_Query($args); if( $query->have_posts() ) { $year = array(); while ( $query->have_posts() ) { $query->the_post(); if ( get_the_date('Y') ){ array_push( $year, get_the_date('Y') ); } } wp_reset_postdata(); } $year = array_unique( $year ); $year = array_values( $year );
以上で完成です!ここではarray_uniqueで重複した年の値を削除して、array_valuesで配列の添字を振り直しています。実行すると以下のような配列が出力されます。
すっきりしました!あとは$yearの配列で年毎の記事を取得、表示するだけです。
上記ではpost_typeにpost、orderにascを指定していますが、表示したい投稿タイプ(post、page等)や昇順(asc)、降順(desc)は適宜変更してご利用ください!
以上、Wordpressで投稿が存在する年を取得する方法のご紹介でした!最後まで読んでいただきありがとうございました!