WordPress REST APIとは?使い方や無効化の方法、プラグインを徹底解説
WordPress REST APIとは、WP-CLIやURLベースでWordPress外部からウェブサイトのデータを取得できる仕組みのことです。
WordPress REST APIを利用することで、管理画面を通さずにWordPressの投稿や編集、更新、削除が可能です。
WordPress REST APIの情報は日本ではあまり取り上げられる機会がありません。
そこで、今回は初心者向けにできるだけかみ砕いて解説、加えてWordPress REST APIのコマンドや有効化・無効化の方法、プラグインについても紹介します。
WordPress REST APIとは?
WordPress REST APIは、WordPressをCMSからアプリケーションプラットフォームに転換させることを目的に作られました。
WordPress REST APIについてわかりやすく分解して解説します。
APIの意味
APIとは「Application Programming Interface」の略語で、「エーピーアイ」と読みます。
APIは、あるシステムがほかのシステムと連携できるようにするコードの塊です。
APIはもともと、OSがアプリケーション向けに提供していた機能を指していましたが、しかし、現在ではウェブサービスがアプリケーション開発者向けに公開している機能についてもAPIと呼ばれるようになっています。
例えば、GoogleマップをWordPressで利用する場合には、GoogleマップAPIを使用してWordPressと連携させることになります。
APIを利用すると、サービスの様々な機能を呼び出してシステムに組み込めるため、ゼロからプログラミングする必要がなくなり、アプリケーション開発を効率的に行うことが可能です。
RESTの意味
RESTは「Representational State Transfer」の略語で、「レスト」と読みます。
分散したシステムにおいて、複数のソフトウェアを連携させるのに適した設計原則の1つで、2つのシステムが互いを理解するために必要不可欠なものです。
一般的によく使われる用語としてのRESTは、パラメーターを指定して特定のURLにアクセスすると、XMLやJSONで記述されたメッセージが送られてくるシステムです。
RESTはシステムやセッションの状態に依存せず、同じ組み合わせのURLやパラメーターからは常に同じ結果を返すことが期待されます。
ただし、RESTは厳密に定義されているわけではなく、「SOAPやRPCを必要としない、軽量でフラットなウェブインターフェース」程度の意味で用いられることが多いです。
WordPress REST APIが開発された背景
WordPress REST APIは、2016年12月にリリースされたWordPress4.7から正式に採用され、それ以前はプラグインとして提供されていました。
WordPressで作られたいろいろなアプリケーションをサポートし、WordPressをCMSからアプリケーションプラットフォームに転換することが目的です。
WordPress REST APIは開発者やユーザーに多くの影響を与えます。たとえば、ユーザーにとっては以下のような変化がありました。
- ブロックエディタを含む、WordPressのユーザーインターフェースの変化
- WordPressモバイルアプリケーションの改善
- admin-ajax.phpがすべてWordPress REST APIに置き換えられた
- カスタマイザーがよりリッチで使いやすくなった
開発者にとっては以下のような影響があります。
- WordPress REST APIを利用してSPA(Single Page Application)を作成できる
- WordPressをほかのフロントエンドテクノロジーと統合
- PHPを専門としない開発者でも、WordPressの開発が可能になった
- JavaScriptの必要性が増加
WordPress REST APIにアクセスする方法
WordPress REST APIにアクセスするには、WP-CLIを利用します。
ここからはWP-CLIと認証について解説します。
WP-CLI
WP-CLIとは、WordPressをコマンドラインで操作するためのツールです。
マウスを使ったGUIベースの操作が直感的でわかりやすい分、効率化が難しいのに対し、WP-CLIではコマンド入力による効率的な操作が可能になります。
また、コマンドをスクリプトに組み込むことで自動化し、プラグインのアップデートを定期実行したり、複数のウェブサイトで同じ処理を一括で行ったりすることが可能です。
WP-CLIにアクセスするには、MacやLinuxの場合はターミナル、Windowsではコマンドプロンプトからアクセスしましょう。
なお、WP-CLIを使うには接続先サーバーにWP-CLIをインストールし、SSHを有効化しておく必要があります。
インストール方法はサーバーによって異なるため、マニュアルを参照するかサーバーに問い合わせてください。
認証
ウェブサイトにWP-CLIでアクセスすると、認証が必要になる場合があります。
一部のエンドポイントはパブリックですが、認証が必要となるエンドポイントもあります。
WP-CLIでサイト認証を行うには、認証プラグインのインストールが必要です。
認証プラグインには「Basic-Auth」「JWT Authentication」などがあります。
WordPress REST APIの代表的なコマンド
WordPress REST APIで使用する代表的な4つのコマンドについて解説します。
- GET:データを取得する
- POST:新しいデータを追加する
- PUT:既存のデータを編集する
- DELETE:データを削除する
GET
GETコマンドは、投稿などのデータをWordPress REST APIから取得します。
以下の通りにコマンドを実行すると、ウェブサイトで公開されているすべての投稿を取得することが可能です。
GET /wp/v2/posts/?status=published
データを取得した後は投稿に対して「削除」「編集」「更新」などが行えます。
ほかにも、投稿をウェブアプリケーションに出力することも可能です。
例えば、最新の投稿を取得したいときは、以下のようにGETコマンドを使います。
GET /wp/v2/posts/?per_page=1
POST
POSTコマンドは、新しいデータやリソースをウェブサイトに追加します。
投稿を作成したいときは、以下のようにコマンドを実行しましょう。
POST /wp/v2/posts/
上記のコマンドで空白の投稿が作成されます。
POSTコマンドでは、投稿以外にも固定ページや添付ファイル、ほかの投稿タイプを選択することも可能です。
固定ページを作成する場合は以下の通りに実行してください。
POST /wp/v2/posts/pages
上記のコマンドで空白の固定ページが作成されます。
PUT
PUTコマンドでは、投稿や固定ページなど既存のリソースを編集できます。
下書き状態にある投稿のIDを以下のように指定し、編集を行いましょう。
PUT /wp/v2/posts/233
投稿を公開状態にするには、以下の引数を使用してください。
{ "status" = "publish" }
DELETE
DELETEコマンドは、投稿や固定ページなど既存のリソースの削除を行います。
DELETEコマンドを実行すると、デフォルトでは投稿をゴミ箱に移動しますが、完全に削除することはありません。
作成した投稿を削除するには、以下の通りにコマンドを実行してください。
DELETE /wp/v2/posts/233
ゴミ箱を経由せず完全に削除したい場合は、以下のようにコマンドを打ちます。
DELETE /wp/v2/posts/233?force=true
WordPress REST APIの無効化の方法
WordPress REST APIはWP-CLIだけでなく、特定のURLに接続することでもJSON形式でデータを取得できます。
WordPressのURLの後ろに「/wp-json/wp/v2/」を付け足し、エンドポイントを指定することで結果を受け取ることが可能です。
このURLは特定のユーザーだけに公開されているわけではなく、パブリックなものです。
そのため、ウェブサイトによってはWordPress REST APIを無効化しておきたいこともあるかもしれません。
WordPress REST APIを無効化するには、functions.phpに以下のコードを記述してください。
function disable_rest_api() { return new WP_Error( 'disabled', __( 'REST API is disabled.' ), array( 'status' => rest_authorization_required_code() ) ); } add_filter( 'rest_authentication_errors', 'disable_rest_api' );
上記を記述した後に、サイトのURLに「/wp-json/wp/v2/」を付けてアクセスしてみましょう。
以下のように表示されれば無効化されています。
{"code":"disabled","message":"REST API is disabled.","data":{"status":401}}
WordPress REST APIはプラグインで利用されていることがあり、その場合は無効化することで問題が発生することもあります。
有名どころでは「Contact Form 7」「Jetpack」がWordPress REST APIを利用しているので、注意しましょう。
WordPress REST APIの脆弱性について
WordPress REST APIがWordPressのコアに採用されたのは、2016年12月のWordPress4.7からです。
その翌年の2017年にはWordPress REST APIの脆弱性が発覚、特定のリクエストをサーバーに送信することで、認証をすり抜けてウェブサイトを改ざんするコンテンツインジェクションが可能な状態でした。
この脆弱性によって、世界中で155万ものウェブサイトが改ざんの被害を受けたと報告されています。
この脆弱性はWordPress4.7.2にて修正されていて、現在のところWordPress REST APIの脆弱性についてほかの報告はありません。
WordPress REST APIプラグイン「WP REST API Controller」
「WP REST API Controller」は、カスタム投稿のエンドポイントとAPIレスポンスに添付されたメタデータをカスタマイズできるプラグインです。
APIレスポンスをきめ細やかにカスタマイズしたい人におすすめです。
インストール方法と使い方
WP REST API Controllerのインストール方法は、ほかのプラグインと同様です。
WordPressの管理画面から「プラグイン」の「新規追加」を開き、右上の検索窓に「WP REST API Controller」と入力、表示されたら「今すぐインストール」と「有効化」をクリックしてプラグインを使えるようにしましょう。
WP REST API Controllerは、WordPressの管理画面の「ツール」→「REST API Controller」から操作できます。
「Post Types」と「Taxonomies」タブに分かれており、それぞれの項目を有効化・無効化することでAPIレスポンスのカスタマイズを行いましょう。
なお、設定画面は日本語化されていないため、英語が苦手な人はGoogle翻訳などを利用して設定をしてください。
まとめ
今回はWordPress REST APIについて解説しました。
WordPress REST APIはさまざまな利用方法があります。
特に、WordPressの管理画面を経由せずに投稿や編集、更新が可能なことから、WordPressと連携したアプリケーションの開発では重要な機能を担っています。
WordPress REST APIの特性を理解した上で、アプリケーション開発に活かしましょう。
独自ドメインを取得するなら「お名前.com」
「お名前.com」は、国内No.1のドメイン登録サービスです。
独自ドメインと合わせて、WordPressの自動インストールに対応したレンタルサーバーも利用できます。
WordPressや独自ドメインを一度も使ったことのない人でも、スムーズに始められるはず。
「.com / .net」なら【0円~】ご利用できるので、まずは、お好きなドメイン名を検索してみましょう。
まずは検索!ドメインは早い者勝ち