【WordPress】2018年版 管理画面以外から投稿する2つの方法 | WP REST API 編

ブラウザ管理画面を使わずにWordPressサイトに投稿、固定ページの追加、メディアの追加、プラグインのアップデート等をする方法を再研究してみました。

前記事ではWP-CLIによる方法を紹介しましたが、今回はWordPressの標準機能 WP REST API による方法を紹介します。

このコラムで紹介する方法により以下のようなことがブラウザなしで可能になります。

  • 投稿(記事の新規追加・更新・削除)
  • 固定ページの新規追加・変更・削除
  • メディアの新規追加・変更・削除
  • ユーザーやコメントの管理
  • WordPress外のシステムとのデータ連携(自動連携)

 

WP REST API と WP-CLI の2つの方法

ブラウザ管理画面を使わずにWordPressサイトの管理やコンテンツ更新をするには WP REST API と WP-CLI の2つの手段があります。

結論から言うと WP-CLI の方が遥かに多機能な上に操作が簡単です。WP-CLI が使用できるなら WP REST API を使う理由はあまりないでしょう。

WP-CLI については【WordPress】2018年版 管理画面以外から投稿する2つの方法 | WP-CLI 編を参照ください。

 

WP REST API とは?

WP REST API はWordPressサイトの各種データをブラウザ管理画面を使わずに取得・更新できる仕組みです。もともとはプラグインとして提供されていましたが、2016年12月6日リリースのWordPress4.7から標準機能になっています。

WordPress はアプリケーションフレームワークへと生まれ変わろうとしています。このプロジェクトは、簡単で理解しやすく、信頼性の高い API フレームワークを開発することを目的として生まれました。そして WordPress 本体の API を開発することも目的としています。

このプラグインは簡単な HTTP ベースの REST API を提供します。あなたのサイトのユーザー、投稿、タクソノミー、その他のデータに対してシンプルな HTTP リクエストを送信することで、取り出したりアップデートすることが可能です。

http://ja.wp-api.org/ より引用

 

PHPのスキルが必須!

WP-CLI はコマンドを覚えるだけでWordPressを操作できましたが、WP REST API はその名の通り REST API に過ぎません。何かをやりたければPHPスクリプトを作る必要があります。

なお、PHPではなく JavaScript / Java / Python / Ruby / Perl といった他のプログラミング言語からでも操作可能です。

 

WP REST API で何ができる?

データを追加、取得、更新、削除することをCRUD(※1)と呼びますが、WP REST API では以下についてCRUD機能を提供しています。

  • 投稿(ブログ記事)
  • 固定ページ
  • メディア
  • カテゴリー
  • タグ
  • コメント
  • ユーザー

WP REST API の全機能については下記を参照ください。
http://wp-cli.org/ja/

WP-CLI ではデータのCRUD、プラグイン管理、テーマ管理、メニュー操作などあらゆる操作ができるのに対し、WP REST API はデータのCRUDに限定されています。

※1
Create(生成・追加)、Read(読み取り・取得)、Update(更新)、Delete(削除)の頭文字を取って、CRUD(クラッド)と略されます。

インストール方法

WordPress REST API (Version 2)はWordPressの標準機能なので、プラグインのインストールは不要、WordPressをインストールした時点で使うことができます。

ただし、データの新規追加・変更・削除をする場合は認証のためのプラグインが必須となります(後述しますのでご安心を)。

もともとは下記プラグインをインストールする必要がありましたが、2016年12月6日リリースのWordPress 4.7から標準機能になりました。

 

WordPress REST API (Version 2)
https://wordpress.org/plugins/rest-api/

使い方 – データの取得

WP REST API によるデータの取得はとても簡単です。

http://あなたのウェブサイトのドメイン/wp-json/wp/v2/posts

にアクセスすれば投稿のリストをJSONとして取得できます。

もし 404 Not Found になるなら下記のいずれかが原因でしょう。

  • WordPressが最新バージョンでない
  • WP REST API が(意図的に)無効化されている
  • パーマリンク設定がデフォルトの状態(pretty permalinkが無効)

公式ドキュメントを参考にWordPressの設定を見直しましょう。
http://ja.wp-api.org/
http://ja.wp-api.org/glossary.html

 

投稿のリストを取得する以外にも個別の投稿、固定ページ等も取得可能です。

 

他にも取得機能があります。全機能は公式ドキュメントを参照ください。

サンプルPHPスクリプト

 

使い方 – データの追加・更新・削除

WP REST API でデータの新規追加、更新、削除といった更新系の処理には認証が必須となります。もし認証なしに更新できてしまったら大問題ですよね!

WP REST API の認証方式は3つあるので、目的に応じて選択しましょう。

  • クッキー認証
  • OAuth 認証
  • アプリケーションパスワード または ベーシック認証

各認証方式についての詳細は下記を参照ください。
http://ja.wp-api.org/guide/authentication/

ここでは最もシンプルなアプリケーションパスワードによる認証を通じて新規投稿する方法をご紹介します。※シンプルといってもハードル高めなので、それなりにPHPに詳しくないと難しいかもしれません…。

 

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

まず必須プラグイン「Application Passwords」をインストール・有効化しましょう。(有効化を忘れずに!)
https://ja.wordpress.org/plugins/application-passwords/

2. パスワードの発行

続いてAPI認証用パスワードの発行です。※管理画面のログインに使うパスワードとは別にAPI認証専用のパスワードが必要になります。

プラグインApplication Passwordsをインストール・有効化すると、管理画面(ダッシュボード)のユーザー編集画面の下部に「Application Passwords」という項目が追加されます。

Application Passwords 設定画面

 

入力して Add New をクリックするとパスワードが発行されます。※ここでの入力値は認証に使用するわけではありません。管理名なので任意のものOKです。

Application Passwords パスワード発行画面

パスワードは一度しか表示されないので必ずコピペ・メモしましょう。

 

3. APIリクエスト

準備ができたら実際にAPIにリクエストしてみましょう。リクエストは直接curlコマンドを使用してもOKですが、ここでは学習のためPHPスクリプトで新規投稿するサンプルを用意しました。

POSTによる送信ベーシック認証という2つのポイントをクリアするためcURL関数を使います。

PHP初心者の方だと何をやっているかわからないかもしれませんが、雰囲気だけつかめればよいかと思います…。

PHPサンプルスクリプト

 

いかがでしょうか。WP-CLI ならわずかなコマンドで実現できますが、WP REST API だと認証の準備、スクリプト作成となかなか手間が掛かります(地味につらかったです…)。

さらに追い打ちをかけるようですが…今回はシンプルなApplication Passwordsによる認証を使いましたが、本番環境ではOAuth認証の使用が推奨されています。OAuth認証は複雑な実装が必要なのでそれなりの覚悟が必要です…。

投稿の新規追加以外にも様々な機能があるので、公式ドキュメント を参考に実際に手を動かして色々実装してみましょう。

以上、【WordPress】2018年版 管理画面以外から投稿する2つの方法 | WP REST API 編でした。この記事が役に立ったら是非シェアください!

コメントを残す

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