WordPressとは別の既存CMSがあります。このCMSに蓄積されたデータをWordPressで表示したいという要望があります。そこで、このCMSからWordPressへREST APIで新規投稿/編集/削除するようにしました。
WordPress REST APIとは
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/man.png)
今でもxmlrpc.phpがあるけど、それとは違うものなのかな?
外部システムとWordPressとの間の通信方法として、xmlrpc.php がありました。XMLを使ったXML-RPCというデータ通信に対応しています。現在もWordPressにxmlrpc.phpが残っていて使うことができます。
現在は、新しいWordPress REST APIがあります。REST形式のURLにリクエストすると、レスポンスデータはJSONで返ってきます。リクエストデータにもJSONデータを使うことができます。新規に使う場合は、xmlrpc.phpより、WordPress REST APIを使ったほうがいいでしょう。
例えば、投稿一覧を取得するには、curlコマンドを使って、
$ curl "http://localhost/wp-json/wp/v2/posts"
Code language: Bash (bash)
投稿ID=1を指定して、投稿データを取得するには、
curl http://localhost/wp-json/wp/v2/posts/1
Code language: Bash (bash)
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/woman.png)
レスポンスはJSONで返ってくるのね
Application Passwords plugin
投稿一覧や投稿データの取得は、認証は必要ありません。しかし、変更する操作、つまり新規、編集、削除するには、認証が必要です。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/woman.png)
そうでないと、誰でも編集や削除ができてしまうわね
上記「WP REST APIの認証」に、クッキー認証、OAuth認証、アプリケーションパスワードまたはベーシック認証の説明があります。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/man.png)
読んでいると眠くなっちゃうよ、つまりどれを使えばいいのかな
クッキー認証は、WordPressプラグインやWordPressテーマ向けのようです。
OAuth認証は、外部システムのログインをWordPressログインで認証するものです。「FaceBookでログイン」や「Googleアカウントでログイン」みたいなものです。
アプリケーションパスワードは、WordPressに「Application Passwords」pluginをインストールします。通常のWordPressログインパスワードとは別の、アプリケーションパスワードを作っておきます。外部からREST URLにアクセスするとき、このアプリケーションパスワードを付けてアクセスします。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/woman.png)
クラウドサービスのAPIキーシークレットみたいなものね。
今回は、アプリケーションパスワードを使うことにしました。
WordPress管理画面のプラグインで、新規追加ボタンをクリックします。
キーワードに「Application Passwords」を入力すると、「Application Passwords」が表示されるので、「今すぐインストール」をクリックします。
![](https://www.ninton.co.jp/wordpress/wp-content/uploads/2020/08/wp_rest_api_1.jpg)
インストールしたら、「有効化」ボタンをクリックします。
![](https://www.ninton.co.jp/wordpress/wp-content/uploads/2020/08/wp_rest_api_2.jpg)
この案件では、投稿者名は表示しません。そこで、外部システム用ユーザを新規に作り、名前は「xxxcms_rest_api」、権限グループは「編集者」にしました。
ユーザの詳細ページを表示して、一番下へスクロールすると、Application Passwordsの項目があります。
![](https://www.ninton.co.jp/wordpress/wp-content/uploads/2020/08/wp_rest_api_3.jpg)
入力欄に適当な名前、例えば「#1」を入力します。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/man.png)
ここで入力した名前「#1」がユーザー名になるのかな?
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/woman.png)
違うのよ。認証時のユーザー名はWordPressのユーザー名よ。
「Add New」ボタンをクリックします。
![](https://www.ninton.co.jp/wordpress/wp-content/uploads/2020/08/wp_rest_api_4.jpg)
パスワードが表示されるので、安全なファイルにコピペしておきます。
このダイアログを閉じると、パスワードは二度と表示されません。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/man.png)
コピペする前に閉じちゃったよ〜
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/woman.png)
心配しないで。いま作ったパスワードを削除して、新たにパスワードを作ればいいのよ。
![](https://www.ninton.co.jp/wordpress/wp-content/themes/cocoon-master/images/man.png)
コピペしたファイルを削除しちゃったよ〜
もしコピペする前に閉じてしまったり、コピペしたファイルを紛失してしまったら、そのパスワードはRevokeして、新しいパスワードを発行します。
読みやすいように4文字ごとにスペース区切りで表示されていますが、実際にプログラムで使うときは、スペースを削除します。