ぱーくんのサイト別館

ぱーくん plus idea

【2019年最新】WordPressのREST APIで記事情報の取得や投稿を行う方法

 
この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

以前から、WordpressでのREST APIの提供は行われていました。

WordPressのVer4.6以前は標準ではなかったため、プラグインをインストールする必要がありましたが。Ver4.7より標準実装になり、特にプラグインを入れなくても、RESTを使えるようになっています。

(Ver4.7以降はWordPressのインストールだけでREST-API自体は使え、投稿情報を取得することなどもできますが、記事を投稿するなどの更新系の処理を行うには認証が必要で、その認証の仕組みを提供するのに、認証の種類に応じたプラグインが必要となっています。後述します。)

WordPressはブログCMSのメジャーとしての地位を確立していて、Wordpressと他のシステムを連携させたいというニーズは、今後もどんどん増えてくるでしょう。

そうなると、RESTなど、APIを使った連携も視野に入ってきますよね。

この記事では、RESTを使ってWordpressの情報を取得したり、記事を投稿したりする方法について解説します。

 

 

REST APIでWordpressの各種情報を取得する

はじめに、標準の機能で、投稿記事などの情報を取得してみましょう。

どのようなREST APIがあるのかは、公式のAPIリファレンスページに載っています。

投稿の情報を取得するには対象ドメイン+/wp-json/wp/v2/postsをGETメソッドで取得します。

いくつか例を見てみましょう。

 

投稿の一覧を取得する

 

投稿Idが2の投稿を取得する

 

Ver4.7以前はfilterというパラメータが使用でき、以下のように取得できましたが、セキュリティ上の理由で、Ver4.7以降では使用できなくなっています

 

今後は以下のように、カテゴリなどで絞って、searchオプションを使うといいかもしれません。(searchというエントリポイントもありますが、いまいち使いにくい。。)

 

REST APIで記事の投稿や更新を行う

次に、新規に記事を投稿してみます。

投稿は対象ドメイン+/wp-json/wp/v2/postsに対してPOSTメソッドを発行することで行います。

ただし、更新系の処理には認証が必要で、認証の方法によって、プラグインをインストールする必要があります。

 

認証の種類と必要なプラグイン

このうち、今回は、パスワード認証を使うことにします。

本番環境ではOAuth認証を使うことが推奨されていますので、それはまた、別の記事でご紹介したいと思います。

 

プラグインのインストールとセットアップ

プラグインのインストール

はじめに「Application Passwords」プラグインをWordpressにインストールし、有効化します。

 

認証用パスワードの発行

次にAPI認証用のパスワードを発行します。

※管理コンソールのログインに使うパスワードとは別にAPI認証専用のパスワードが必要になります。

「Application Passwords」プラグインを有効化すると、管理画面(ダッシュボード)のユーザー編集画面の下の部分に、以下のようにAPI認証用のパスワードを追加する表示が現れます。

ここで、適当に名前をつけて「Add New」ボタンを押すと、パスワードが発行されます。


こんな画面が表示されます。

 

Base64化したパスワードの準備

パスワードが発行されたのですが、それをそのまま認証に利用するわけではありません。

実際に投稿のリクエストを行うには、ユーザ名と認証パスワードを「:」(コロン)で連結し、それを Base64化した文字列をヘッダに埋め込んで使います。

例えば、ユーザ名が「usera」で、上記で発行されたパスワードが「zxx1 DEtS 3xxP wxxg qxxe mxxF」だったとしたら、

「usera:zxx1 DEtS 3xxP wxxg qxxe mxxF」をBase64化します。

 

コマンドでやるとしたら、

といった感じです。

 

POSTを使った記事投稿

それではBase64化したユーザ名と認証パスワードを使って投稿を行いましょう。

ヘッダーへは 「Authorization: Basic xxxxxx 」のように追加します。

 

curlを利用して投稿すると以下のようになります。「Sample title」というタイトルで下書き状態で投稿されます。

 

上記はタイトルだけをセットしていますが、記事の中身などもセットするには、JSON形式を使い、ヘッダーに、Content-Type: Application/jsonを追加します。

以下の例は、記事の中身も含めて、公開状態で投稿されます。

 

エラーでREST APIでの投稿に失敗する場合

環境によってはエラーが表示されて投稿できない場合があります。

私が遭遇したエラーは以下のようなものでした。

 

Authorizationヘッダが禁止されている場合

「Application Passwords」プラグインを有効化して、ユーザ編集画面の下部に以下のようなエラーが表示されていることがあります。

Authorizationヘッダが禁止されているために表示されるもので、この状態のまま投稿のリクエストを送ると、Authorizationヘッダが除外されるので、「401エラー」になります。

この場合は、「.htaccess」ファイルに

を追加します。

 

海外からのREST APIが禁止されている場合

レンタルサーバを使っていると、WAFやサーバ自体の設定で、海外のIPアドレスからのREST更新が禁止されていることがあります。

この場合、多くは403エラーとなります。

Xserverの場合は、海外からのAPI更新を禁止していたので、それを解除する必要がありました。

この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Copyright© ぱーくん plus idea , 2019 All Rights Reserved.