WP REST API v2を使ってみた

はじめに

WP REST API v2を使うと、外部アプリケーションから
wordpressに記事や固定ページを作成したり、編集、削除できます。

ちなみに、作成や編集、削除には認証が必要になりますが、
閲覧だけなら認証する必要はないようです。

上記URLにアクセスしてみると、投稿のリストがjson形式で返されます。

WP REST APIについて

WP REST APIを使うために、
今まではプラグインを導入する必要がありましたが、
wordpress 4.7からは最初から組み込まれていますので、
特にプラグインをインストールする必要はないようです。

認証について

wordpressの記事や固定ページをWP REST API v2から
作成・編集・削除しようとした場合、
認証が必要になるようです。

  • クッキー認証
  • OAuth認証
  • Basic認証

認証の方法は上記の種類があります。
詳しくは公式ドキュメントの認証をご確認ください 🙂

OAuth認証プラグインの導入

OAuth認証を提供してくれるPluginを導入します。

上記プラグインをwordpressにインストールしてください。
ここからいくつか、手動で作業する必要があります。

.htaccessの編集

.htaccessをエディタで開き、上記内容を追記します。
できるだけ行頭あたりに書くことが好ましいようです。

wp-config.phpの編集

次に、このプラグイン用のシークレットキーを、
wp-config.phpに追記します。
シークレットキーの生成はwordpressの秘密鍵サービスを
利用するのが楽かと思います。
https://api.wordpress.org/secret-key/1.1/salt/

上記のように、wp-config.phpにJWT_AUTH_SECRET_KEYとして、
生成された秘密鍵の文字列を追記します。

この秘密鍵もできるだけ行頭あたりに書くことをおすすめします。

認証する方法

導入したOAuth認証プラグインを利用するには、
認証エンドポイントへユーザ名とパスワードを渡す必要があります。

上記URLへユーザ名とパスワードをPOSTすると、
認証用のトークンがJSON形式で返されます。

記事や固定ページを作成・編集・削除するには、
返された認証用トークンを使用します。

使用例

試しにcurlコマンドで投稿してみましょう。

OAuth認証をする

上記コマンドを叩くと、
OAuth認証をしたユーザーのトークンが発行されます。

上記のようなjsonが返されるかと思います。
投稿にはユーザーのトークンを使用します。

投稿する

先ほど取得したユーザーのトークンをAuthorizationヘッダーで渡し、
記事の内容は指定されているパラメータでPOSTします。

ここではtitleとcontentのみをPOSTしましたが、
送信できるパラメータは多くあります。
詳しくは投稿のAPIリファレンスを参照してください 🙂

おまけ

投稿できるようになるまで、いくつか躓いた箇所があったので
メモしておきます。

code:rest_cannot_create

OAuth認証に成功して、記事を書こうとした時に
発生したエラーです。

上記内容が.htaccessの正しい位置に書かれていなかったことが
原因のようです。

上記のwordpressの設定より前に書いたところ、
無事解決しました。

code:jwt_auth_bad_config

JWT_AUTH_SECRET_KEYの定義位置が、
正しい位置ではなかったため発生したエラーです。

上記コード部分のwp-settings.phpが読み込まれる前に、
下記のJWT_AUTH_SECRET_KEYを定義したところ、
無事解決しました。