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

上記を実行すると以下の画像のような配列が出力されます。

post-exist-year-001

指定した投稿タイプの全投稿から年の値が取得されます。重複した年も含まれているため、数が多くなっています。ここから重複した年の値を削除します。

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で配列の添字を振り直しています。実行すると以下のような配列が出力されます。

post-exist-year-002

すっきりしました!あとは$yearの配列で年毎の記事を取得、表示するだけです。

上記ではpost_typeにpost、orderにascを指定していますが、表示したい投稿タイプ(post、page等)や昇順(asc)、降順(desc)は適宜変更してご利用ください!

以上、Wordpressで投稿が存在する年を取得する方法のご紹介でした!最後まで読んでいただきありがとうございました!

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら

おすすめの書籍