東京都府中市、九段下のWEB制作会社Maromaroのブログです

2024.12.02

taka

【備忘録】WordPressの記事取得で今週公開の記事一覧を取得する方法

こんにちは
MaromaroのTakaです。

今回はWordPressで今週公開の記事一覧を取得する方法を備忘録として残します。

使用する機会については以下のシチュエーションがあるかと思います。

使用用途例

  1. 今週の最新記事セクションの作成:ページのTOPやサイドバーなどに今週の最新記事として紹介することが出来ます。また、自動化できるのでメンテナンスの手間が省けます。
  2. 社内共有データとしてのセクション:非公開で社内共有用としてページを設け、今週公開した記事一覧を社内で共有することが出来ます。
  3. アーカイブページ:過去の記事アーカイブなどで、週単位で表示したい場合に応用で使用することができます。(各週ごとの最新記事など)

早速実装方法を解説していきます。

実装方法

大まかな流れとしては以下のようになります。
※今週の定義は 月~日 のサイクルとします。

・現在の日時を基準に今週の開始日と終了日を計算する
・date_queryに開始日と終了日を入れる
・記事を取得

上記となります。

実際の実装方法は以下になります。

現在の日時を基準に今週の開始日と終了日を計算する

$today = current_time('timestamp'); // サイトのタイムゾーンに基づいた現在のタイムスタンプ
$week_start = strtotime('monday this week', $today); // 今週の月曜日
$week_end = strtotime('sunday this week', $today) + DAY_IN_SECONDS - 1; // 今週の日曜日の終わり

current_time(‘timestamp’)とDAY_IN_SECONDSはWordPress専用の関数なのでご注意ください。

date_queryに開始日と終了日を入れる

$args = [
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => [
[
'after' => date('Y-m-d H:i:s', $week_start),
'before' => date('Y-m-d H:i:s', $week_end),
'inclusive' => true, //afterとbeforeの指定日を含むか
],
]
];

記事を取得

上記までの流れを組み込み、記事の取得までを記載します。

$today = current_time('timestamp'); // サイトのタイムゾーンに基づいた現在のタイムスタンプ
$week_start = strtotime('monday this week', $today); // 今週の月曜日
$week_end = strtotime('sunday this week', $today) + DAY_IN_SECONDS - 1; // 今週の日曜日の終わり

$args = [
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => [
[
'after' => date('Y-m-d H:i:s', $week_start),
'before' => date('Y-m-d H:i:s', $week_end),
'inclusive' => true, //afterとbeforeの指定日を含むか
],
]
]; $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); /** * 記事の取得 */ } wp_reset_postdata(); }

これで、現在時点の月~日までの公開日を指定し、記事を取得することが出来ます。
※$week_startと$week_endを操作することで曜日を変更することも可能となっています。

以上、Takaでした。