WordPress の REST API で出力されるデータをフィルタリングできることを知ったのでメモ。
例えば、 https://example.jp/
という WordPressサイト があったとします。
以下の URL の REST API に GETリクエスト を飛ばすと、投稿の一覧が取得できます。
https://example.jp/wp-json/wp/v2/posts
個別記事はIDで指定します。
https://example.jp/wp-json/wp/v2/posts/42
ここまでは知っていましたが、色々な情報が出力されるため、場合によっては不要なデータの方が多い、というケースも考えられます。
例えば、 AJAX で投稿のID、タイトル、投稿日時、URLだけ欲しい場合は以下のように _fields
パラメータで指定すると、そのデータのみ抽出できるとのこと。
https://example.jp/wp-json/wp/v2/posts?_fields=id,title,date,link
同様に、個別記事でもフィルタリングが可能。IDが 42
の記事のタイトル、更新日時、本文が欲しい場合は以下。
https://example.jp/wp-json/wp/v2/posts/42?_fields=title,modified,content
こうすると余分なデータを省けるのでコードも書きやすいですし、レスポンスが軽くなることが期待できそうです。
ちなみに、個別にキーを指定するのではなく、「埋め込み前提である程度絞る」のであれば context=embed
も利用できるかと。これは一覧表示の時に役に立ちそうです。
https://example.jp/wp-json/wp/v2/posts?context=embed
参考
- WordPressのREST APIの使い方 – Qiita
- WP REST APIでの記事の取得と表示[PHP版 / JS版] | ocws BLOG
- WordPressのREST APIで記事一覧取得に「embed」を指定すると9割以上サイズを減らせた | オレDEV.com
余談
現在 REST API 周りのドキュメントを読もうと思うと、公式の英語のドキュメントになりますかね?
4.7までのプラグイン時代の癖で「WP REST API」で検索すると以下がヒットしますが、内容が変わっている部分もあると推測されるのでやはり上述のドキュメントですかね……。