WordPress の REST API で出力内容をフィルタリング (リクエスト編)

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

参考

余談

現在 REST API 周りのドキュメントを読もうと思うと、公式の英語のドキュメントになりますかね?

4.7までのプラグイン時代の癖で「WP REST API」で検索すると以下がヒットしますが、内容が変わっている部分もあると推測されるのでやはり上述のドキュメントですかね……。

この記事を書いた人

アバター

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。