🌟
[Laravel]WP REST APIで日付範囲指定してデータを取得する
はじめに
本記事は、筆者による理解の復習・確認やアウトプットの練習のために書いております。
間違った解釈等ございましたら、ご連絡いただけますと幸いです。
前提
・http://www.example.com/wp-json/wp/v2/posts
で記事を取得できます。
・Laravelの日付取得はLaravelフレームワークに標準搭載されているCarbon
を使います。
やりたいこと
日付を指定して記事を取得したい!
今回は直近1週間の記事を取得することを目標とします。
結論
http://www.example.com/wp-json/wp/v2/posts?after={ISO8601形式の日付文字列}
でafterのパラメータには日付範囲の開始日を入れてあげることで取得できます。
Laravelでやってみよう
// ①今日の日付を取得
$today = Carbon::today(); // 2022-08-06 00:00:00
// ②今日から1週間前の日付を取得
$week_ago_date = $today->subWeek(); // 2022-07-30 00:00:00
// ③形式を変換する
$parse_date = $week_ago_date->toDateTimeLocalString(); // 2022-07-30T00:00:00
で、最後の $parse_date
をafterのパラメータに入れてあげることでデータを取得することができます。
つまずいた点・疑問点
$parse_date = $week_ago_date->toIso8601String(); // 2022-07-30T00:00:00+09:00
toIso8601String()
で変換した状態だと何故かうまくデータ取れなかったです。タイムゾーンがあることが原因でしょうか。
タイムゾーンがなくなった状態でも順序は変わっていない、ISO8601形式だからデータが取得できるのでしょうか?
もし分かる方いましたらコメント頂けますと幸いです。
ISO8601とは何か?
国や文化によって日付や時刻の記述順序が違うものを1種類の記述順序に揃えたものがISO8601なんですねー。
ISO8601形式
・20220802T162217+0900
・2022-08-02T16:22:17+09:00
の2種類があるみたいです!
最後に
日付範囲指定をする記事はいくつかあったのですが、結構前の記事が多めだったので書いてみました。
同じようにつまずいた方の参考になれば幸いです!
参考
Discussion