WordPressの「WP REST API」を使って投稿の情報をJSONで取得する方法

「WordPressで作ったWebサイトの情報をJSONで取得したい」ということがあったので、いい機会なので「WP REST API」について勉強しています。

もし興味のある方がいらっしゃいましたら、ご参考ください。

WP REST APIを使えるように準備しよう

以前は「WP REST API」を使えるように WP REST APIを使うためのWordPressプラグインをインストール&有効化する必要がありました。

WordPress4.7以降のバージョンでは、WP REST APIの機能が標準で実装されています。つまり、プラグインのインストールはいらなくなりました。

WP REST APIで投稿の情報を取得する

僕個人的には、あんまり難しいところから始めるのは得意ではないので、まずは実用的でわかりやすいところで「投稿の情報を取得」しました。

例えば、WebサイトのURLが以下だったとします。

https://local.imamura.biz/blog/

このURLの投稿の情報をJSONで取得するには、以下のURLにアクセスするとできます。公開済みの投稿を10件取得できます。

投稿の情報をJSONデータで10件取得する

https://local.imamura.biz/blog/wp-json/wp/v2/posts

ポイントは、URLに「/wp-json/wp/v2/posts」を付与してアクセスする、ってことですね。

取得できるJSON(一例です)

[{"id":133,"date":"2016-10-15T10:19:28","date_gmt":"2016-10-15T01:19:28","guid":{"rendered":"https:\/\/local.imamura.biz\/blog\/?p=133"},"modified":"2016-10-16T13:23:28","modified_gmt":"2016-10-16T04:23:28","slug":"card%e3%82%ab%e3%83%ab%e3%83%bc%e3%82%bb%e3%83%ab","type":"post","link":"https:\/\/local.imamura.biz\/blog\/133","title":{"rendered":"card\u30ab\u30eb\u30fc\u30bb\u30eb"},"content":{"rendered":"<div class=\"card\"><p><a class=\"cf\" href=\"https:\/\/local.imamura.biz\/blog\/1\"><img src=\"https:\/\/local.imamura.biz\/blog\/wp-content\/themes\/genius8\/images\/default_medium.png\"><span class=\"text\">Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!<span class=\"button\">\u3053\u306e\u30da\u30fc\u30b8\u3092\u307f\u308b<\/span><\/span><\/a><\/p><\/div>\n<div class=\"card multiple\"><p><a class=\"cf\" href=\"https:\/\/local.imamura.biz\/blog\/1\"><img src=\"https:\/\/local.imamura.biz\/blog\/wp-content\/themes\/genius8\/images\/default_medium.png\"><span class=\"text\">Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!Hello world!<span class=\"button\">\u3053\u306e\u30da\u30fc\u30b8\u3092\u307f\u308b<\/span><\/span><\/a><\/p><p>
...以下省略

応用:取得する件数の指定もできるよ

URLクエリパラメーターを指定すると、デフォルトで取得できる条件を変えることもできます。例えば、取得する件数を「5件」にしたい場合は「per_page=5」を付与してあげるとOKです。

https://local.imamura.biz/blog/wp-json/wp/v2/posts?per_page=5

指定できるパラメーターはもっとあるので、詳しくはリファレンスをご参考ください。

取得したJSONは「投稿の一覧」として利用するのもいいですね。

WP REST APIで特定の投稿の情報を1件だけ取得する

今度は複数の投稿ではなく「特定の投稿の情報を1件だけ取得」します。

例えば、投稿ID「122」の情報をJSONで取得するには以下のURLにアクセスするとできます。

https://local.imamura.biz/blog/wp-json/wp/v2/posts/122

ポイントは、URLに「/wp-json/wp/v2/posts」を付与して、さらに投稿ID「/122」を付与することですね。

取得できるJSON(一例です)

{"id":122,"date":"2016-10-04T12:15:12","date_gmt":"2016-10-04T03:15:12","guid":{"rendered":"https:\/\/local.imamura.biz\/blog\/?p=122"},"modified":"2016-10-14T21:39:26","modified_gmt":"2016-10-14T12:39:26","slug":"%e3%83%aa%e3%82%b9%e3%83%88%e3%83%9e%e3%83%bc%e3%82%ab%e3%83%bc","type":"post","link":"https:\/\/local.imamura.biz\/blog\/122","title":{"rendered":"\u30ea\u30b9\u30c8\u30de\u30fc\u30ab\u30fc"},"content":{"rendered":"<ul>\n<li>\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8<\/li>\n<li>\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u30b9\u30c8\u30ea\u
...以下省略

まとめ

今回は僕の習熟度の関係で、わりととっつきやすかった投稿を取得する方法ついて書きました。取得したJSONを加工して、アプリを作るってのもいいですよね〜。

WP REST APIを使うとできることはもっとあります。気になる方はリファレンスをご参考ください。

著者:bouya Imamura