【php】WP REST API を phpで使ってみる その1【WordPress 投稿タイトル取得】

WP REST APIとはなんぞ? という筆者みたいな人もいると思うので簡単に書いてしまうと

  • WordPressで作られたサイトのデータ(投稿のタイトルや日時の取得など)が取得できる

という感じですね。ただし、WordPressのバージョン4.7以前はプラグインでの提供だったので、古いWordPressのサイトでAPIの利用を考える場合にはプラグインを導入しないといけないと思われます(すみません、確認してないのであいまいですが…)。

さて、ざっと調べてみるとWordPress自体はphpで書かれているので、phpを使ってわざわざAPIを利用していくというのはあまり解説がなく、かなり珍しいパターンなのだろうと。まあ、自分のサイトであればわざわざAPIを使って読み込まずともWordPressを使ってカスタマイズしていけば済むわけですしね。。。

しかし。もしかすると世の中にはまれに「phpでの方法が知りたい」なんて人がいるかもしれない(主に今回の筆者なのですが)。ということで、最近利用する機会があったので簡単にまとめてみることにしました。参考になれば幸いです。

スポンサーリンク

WP REST API はjson形式

API(正確にはweb APIになるのかな)というのは

ウェブ開発においては、APIは一般にHTTP要求メッセージ群とXMLまたはJSON形式などの応答メッセージの構造定義で構成される。「ウェブAPI」はWebサービスと事実上同義だが、Web 2.0と呼ばれる最近の傾向では、SOAPベースからREST風の直接的通信へと変化している。ウェブAPIはマッシュアップと呼ばれる技法で複数のサービスを組み合わせて新たなアプリケーションとすることを可能にする。

ウィキペディア アプリケーション・プログラミングインタフェースより引用

です。WP REST APIもjson形式で取得できます。

APIの確認をしてみる

最初にも記述していたように、WordPressのバージョン4.7以前ではプラグインの導入が必要です。逆にいえば最新バージョンになっているのであれば手軽に利用できるようになっています。その確認方法は

http://(WordPressで書かれたサイトのurl)/wp-json/wp/v2/

つまり、サイトURLの後ろに/wp-json/wp/v2/をつけるだけでOKです。wordpress.orgの日本語サイトで確認してみましょう。

WordPress 日本語ローカルサイト

URLの後ろに/wp-json/をつけてみると…

https://ja.wordpress.org/wp-json/wp/v2/

文字がずら~っと表示されたかと思います(Win10、Chromeにて確認)。このような表示が出ればこのサイトのAPIは利用可能です。

対応していない場合は末尾に「”status”:404」の文字がある1文が表示されるかと思います。その場合は(自分のサイトであるなら)、WordPressのバージョンアップをしてみてください。

投稿の情報を取得してみる

今回は投稿の情報を取得してみます。投稿の情報を取得するには

http://(WordPressで書かれたサイトのurl)/wp-json/wp/v2/posts

と、先ほどのURLにpostsを追加するだけ。さらに、ここでは最近の5つ分の投稿に限定してみます。その場合は

http://(WordPressで書かれたサイトのurl)/wp-json/wp/v2/posts?par_page=5

postsの後ろに引数を追加しましょう。その他の引数については

WP REST API

のAPIリファレンスを参照してみてください。

では、引き続きWordPress 日本語ローカルサイトで確認してみると

https://ja.wordpress.org/wp-json/wp/v2/posts?par_page=5

…それでも文字だらけですねw このままだとわかりにくいのでちょっと整形してみました。

テキストでコピペしてカンマの後に改行を追加しただけですが、それでも少しは見やすくなったですかね。

日本語部分はデコードしてみないと何が書いてあるのかわからないので、さらに変換してみましょう。

おぉ、一気にわかりやすくなりました。変換はURLデコードやユニコードエスケープなどで調べてみるとオンラインで出来るものが見つかると思います。

※URLデコードはBracket(エディタ)の機能で、ユニコードエスケープはKWONLINE.ORGさんのページで行いました

改めて。このように、タイトルや日付などのデータがjson方式にて取得できます。

まとめ

次回はこれをphpで取得~分解してリスト表示してみたいと思います。何かの参考になれば幸いです!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする