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」で検索すると以下がヒットしますが、内容が変わっている部分もあると推測されるのでやはり上述のドキュメントですかね……。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント