2024.12.02
【備忘録】WordPressの記事取得で今週公開の記事一覧を取得する方法
こんにちは
MaromaroのTakaです。
今回はWordPressで今週公開の記事一覧を取得する方法を備忘録として残します。
使用する機会については以下のシチュエーションがあるかと思います。
使用用途例
- 今週の最新記事セクションの作成:ページのTOPやサイドバーなどに今週の最新記事として紹介することが出来ます。また、自動化できるのでメンテナンスの手間が省けます。
- 社内共有データとしてのセクション:非公開で社内共有用としてページを設け、今週公開した記事一覧を社内で共有することが出来ます。
- アーカイブページ:過去の記事アーカイブなどで、週単位で表示したい場合に応用で使用することができます。(各週ごとの最新記事など)
早速実装方法を解説していきます。
実装方法
大まかな流れとしては以下のようになります。
※今週の定義は 月~日 のサイクルとします。
・現在の日時を基準に今週の開始日と終了日を計算する
・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でした。