🌟

[Laravel]WP REST APIで日付範囲指定してデータを取得する

2022/08/06に公開

はじめに

本記事は、筆者による理解の復習・確認やアウトプットの練習のために書いております。
間違った解釈等ございましたら、ご連絡いただけますと幸いです。

前提

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とは何か?

https://ja.wikipedia.org/wiki/ISO_8601
「日付と時刻に関するISOの国際規格」だそうです。
国や文化によって日付や時刻の記述順序が違うものを1種類の記述順序に揃えたものがISO8601なんですねー。

ISO8601形式

20220802T162217+0900
2022-08-02T16:22:17+09:00
の2種類があるみたいです!

最後に

日付範囲指定をする記事はいくつかあったのですが、結構前の記事が多めだったので書いてみました。
同じようにつまずいた方の参考になれば幸いです!

参考

https://carbon.nesbot.com/docs/#api-commonformats
https://developer.wordpress.org/rest-api/reference/
https://developer.wordpress.org/rest-api/reference/posts/
https://ja.wikipedia.org/wiki/ISO_8601

GitHubで編集を提案

Discussion