【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で投稿が存在する年を取得する方法のご紹介でした!最後まで読んでいただきありがとうございました!