[新機能] クラウドバックアップがよりシンプルに - Duplicator Cloudがサードパーティストレージを排除
[新機能] クラウドバックアップがよりシンプルに - Duplicator Cloudがサードパーティストレージを排除
ジョン・ターナー
ジョン・ターナー
REST APIは、WordPressを従来のコンテンツ管理システム以上のものに変える。アプリケーションフレームワークになるのだ。
モバイルアプリ、カスタムウェブサイト、サードパーティ・サービスなど、他のプログラムはWordPressサイトと通信し、データを要求したり、コンテンツを変更したりすることができます。
これは純粋に開発者の領域だと思うかもしれない。そうではない。
REST APIは、おそらくあなたが毎日使っているであろう機能に力を与えています。ブロックエディター?これがREST APIです。ブロックを追加したり、投稿の下書きを保存したりするたびに、あなたは裏でAPIコールを行っているのです。
この記事では、WordPress REST APIとは何か、実際に何をするのか、そしてあなたのサイトでどのように管理するのかを説明します。
以下はその要点である:
WordPress REST APIは、他のシステムがWordPressのデータとやりとりできるようにする組み込みのインターフェイスです。WordPress サイトと外の世界をつなぐ架け橋と考えてください。
WordPressのコアに同梱されています。追加で何かをインストールする必要はありません。
APIはデータ形式としてJSON(JavaScript Object Notation)を使用している。JSONはデータをテキストとして構造化する軽量な方法だ。JSONは人間が読むことができ、実際に見て内容を理解することができる。
JSONのブログ記事は、タイトル、コンテンツ、著者、公開日などのプロパティの整然としたリストのように見える。
REST APIは "デカップリング "を可能にする。WordPressでコンテンツを管理しながら、そのコンテンツをどこにでも表示できる。モバイルアプリで。別のウェブサイトに。デジタルキオスクで。あなたのチームがゼロから作ったカスタムアプリケーションで。
あなたのコンテンツは1つの場所にある。しかし、それはどこにでも現れます。
私はレストランに例えてAPIを説明するのが好きだ。
あなたはテーブルに座っている。あなたは食べ物が欲しい。しかし、いきなり厨房に入り、冷蔵庫から食材を取り出すわけにはいかない。ウェイターという仲介者が必要なのだ。
ウェイターに注文(リクエスト)を伝える。ウェイターがそれを厨房(サーバー/データベース)に運ぶ。厨房が料理を作る。ウェイターが料理を持ってくる(レスポンス)。
APIはウェイターだ。データを求めるアプリケーションと、そのデータを持つシステムとの仲介役だ。APIはリクエストを受け、適切なシステムと通信し、リクエストしたアプリケーションが理解できる形式で結果を提供する。
APIがなければ、アプリケーションはデータベースに直接アクセスする必要がある。それは厄介で、安全ではなく、大規模な管理はほぼ不可能だ。
RESTは、APIを構築するための一連のアーキテクチャルールである。APIがこれらのルールに従っているとき、私たちはそれを "RESTful "と呼ぶ。WordPress REST APIはこの原則に従っているため、名前に「REST」がついている。
核となるコンセプトは以下の通りだ:
サーバーは以前のリクエストを覚えていません。あなたが行うリクエストには、サーバーがそれを処理するために必要なものがすべて含まれていなければなりません。サーバーは、あなたが5秒前に何をリクエストしたかを知っている、と考えることはできません。
これは制限的に聞こえるが、実際にはREST APIをスケーラブルにするものだ。サーバーは、何千もの同時リクエストのセッション状態を追跡するためにリソースを浪費することはない。
クライアント(リクエストを行うアプリ)とサーバー(WordPressサイト)は完全に分離している。これらは独立して開発できる。Reactアプリは、APIエンドポイントが一貫している限り、WordPressがバージョン6.5や7.0にアップデートされても気にしない。
REST APIは、GET、POST、PUT、DELETEのような標準的なHTTPメソッドを使用する。この標準化によってAPIは予測可能になる。RESTに慣れている開発者は、WordPress APIをすぐに使いこなすことができる。
これらの原則は単なる学術的なものではありません。WordPress REST API を信頼でき、予測可能で、使いやすいものにしているのです。
REST APIは、"エンドポイント "と呼ばれるURLを通してWordPressのデータを公開します。エンドポイントとは、特定のデータをリクエストできる特定のアドレスのことです。
例えば/wp-json/wp/v2/postsは、ブログ記事のエンドポイントです。あなたのサイトでそのURLにアクセスすると、タイトル、コンテンツ、著者、画像など、あなたの投稿を含むJSONレスポンスが返されます。
これはブロックエディタを動かすテクノロジーだ。Gutenbergで作業しているとき、あなたが取るすべてのアクションはAPIコールをトリガーします。
段落ブロックを追加しますか?APIコール。画像をアップロードしますか?APIコール。下書きを保存しますか?APIコール。エディター・インターフェースは基本的にJavaScriptアプリケーションで、REST APIを通じてWordPressサイトと通信します。
APIは、プログラムによるCRUD操作(作成、読み込み、更新、削除)を可能にします。WordPressのダッシュボードを開くことなく、コンテンツに対してこれらのすべてのアクションを実行できます。
開発者であれば、5秒で100件の投稿を作成するスクリプトを書くことができる。あるいは、先月の投稿をすべて取り出してレポートを作成する。あるいは、"outdated "とタグ付けされたすべての投稿を免責事項のバナーで更新する。
WordPressはもはや単なるウェブサイトではなく、ウェブサイトをレンダリングするコンテンツAPIなのだ。
REST APIは、標準的なHTTPメソッドを使用してさまざまなアクションを実行します。ここでは、それぞれのメソッドが何をするのかを説明する:
| HTTPメソッド | アクション | 例 |
| ゲット | サーバーからデータを取得する | すべての公開記事のリストを取得する |
| ポスト | 新しいデータを作成する | 新しいブログ記事またはページを追加する |
| プット / パッチ | 既存データの更新 | 既存の投稿のタイトルを編集する |
| 削除 | データを削除する | コメントやメディアファイルを削除する |
GETリクエストは読み取り専用です。GETリクエストはあなたのデータを変更しないので、誰でも行うことができます。ブラウザで公開エンドポイントにアクセスすると、GETリクエストをしていることになります。
他の方法はあなたのデータを変更します。認証が必要です。WordPressはこれらのリクエストを処理する前に、あなたがコンテンツを作成、更新、または削除する権限を持っていることを確認する必要があります。
REST APIは、バージョン4.7以降を実行しているすべてのWordPressサイトでデフォルトで有効になっています。ベースパスは /wp-json/ です。
今すぐテストできる。
新しいブラウザのタブを開き、yourdomain.com/wp-json/に移動する。利用可能なすべてのAPIルートをリストしたJSONレスポンスが表示される。きれいではないが、APIが機能していることが確認できる。
あなたの投稿を見たいですか?yourdomain.com/wp-json/wp/v2/postsを試してみてください。すべてのメタデータを含む、あなたの投稿のJSON配列が表示されます。
これらの公開エンドポイントは、サイト上で既に公開されているデータのみを表示します。しかし、投稿の作成、ページの更新、コメントの削除など、データを変更するアクションについてはどうでしょうか?
それには認証が必要だ。
WordPressは主に2つの認証方法をサポートしています。クッキー認証は、(ブロックエディタのような)同じドメインのリクエストに対して機能します。
外部アプリケーションには、アプリケーションパスワードを使用します。これはWordPressで生成する24文字のトークンで、APIアクセス用に特別に設計されています。メインのログイン認証情報を変更することなく、個別に失効させることができるため、実際のパスワードよりも安全です。
作成するには、Users " Profileにアクセスしてください。アプリケーションパスワードの 設定を見つけて、新しいものを作成してください。

そして、このようにしてREST APIにアクセスする:
https://mysite.com/wp-json/wp/v2/posts?Authorization=Bearer[Password]
Password]は必ずアプリケーションのパスワードに置き換えてください。
そうでなければ、JWT Authentication for WP REST APIのようなプラグインを使うこともできます。
アプリケーションパスワードは望ましい方法です。安全で、追跡可能で、サードパーティのアプリケーションに本当のパスワードを公開することもありません。
接続をテストするには、コマンドラインで次のコマンドを使用する:
curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft
さて、REST APIとは何か、そしてそれがどのように機能するのかを理解したところで、それを使う意味がある実際のシナリオを見てみよう。
これは、WordPressを純粋にコンテンツ管理のバックエンドとして使用する場合です。訪問者はWordPressのテーマを見ることはありません。その代わりに、React、Vue、Next.jsのようなJavaScriptフレームワークを使ってカスタムフロントエンドを構築します。
このフロントエンドは、WordPress REST APIからコンテンツを取得し、あなたが望むようにレンダリングします。WordPressの優れたコンテンツ管理ツールと、フロントエンドの完全なデザインの自由を手に入れることができる。
iOSやAndroidのネイティブアプリをWordPressサイトのコンテンツだけで動かすことができます。アプリはAPIリクエストを行い、投稿を取得し、画像を表示し、コメントを表示します。
コンテンツチームは、彼らがすでに知っているWordPressのダッシュボードからすべてを管理します。アプリ開発者はCMSに触れることはありません。
これらのウェブアプリケーションは、一度読み込むと、その後はページの再読み込みなしで動的に新しいコンテンツを取得する。ユーザーエクスペリエンスはより速く、よりアプリらしく感じられる。
Gmailはこのように動作する。メールとメールの間をクリックしても、ページがリロードされることはありません。同じ体験をWordPressのコンテンツで構築できる。
WordPressから他のプラットフォームにデータをプルしたり、外部サービスからWordPressにデータをプッシュすることができます。
WordPressと在庫管理システム間で商品情報を同期させるために使われているのを見たことがある。あるいは、CRMで収集されたデータからWordPressの投稿を自動的に作成する。
REST APIを使えば、複雑なデータベース操作をすることなく、これらの統合が可能になる。
もしあなたが真っ当なブログやビジネスウェブサイトを運営しているなら、おそらくREST APIに直接触れる必要はないだろう。伝統的なWordPressテーマがすべてを完璧に処理してくれる。
最初のページ読み込み速度を最優先する場合、サーバーレンダリングされたテーマの方が速いことが多い。
ヘッドレスのセットアップでは、コンテンツのフェッチとレンダリングにJavaScriptが必要となり、待ち時間が増えます。ミリ秒単位のロード時間が重要な、コンテンツ量の多いサイトでは、従来のWordPressのアーキテクチャの方が適しているかもしれません。
信頼性が高く、よくサポートされているプラグインがすでに統合の問題を解決しているなら、そのプラグインを使いましょう。できるからといって、カスタムREST APIソリューションを構築しないでください。
プラグインはメンテナンスされ、テストされ、更新される。カスタム統合は、あなたが管理しなければならない技術的負債です。
REST APIは強力だ。しかし目的なきパワーは不必要な複雑さを生み出す。
REST APIを完全に無効にすると、ブロックエディターが壊れます。おそらくいくつかのプラグインも壊れるだろう。RESTAPIを完全に無効にしてから、なぜGutenbergが動かなくなったのか不思議に思うかもしれませんが、これが原因です。
より良いアプローチは、無効化ではなく制限である。すべてのAPIエンドポイントに対して認証を要求することができます。こ れに よ り 、 ロ グ イ ン し てい る ユーザーには Block Editor の機能を維持 し つつ、 公開エン ド ポ イ ン ト への匿名ア ク セ ス を遮断す る こ と がで き ます。
REST APIを無効にしたい場合は、WPCodeのようなプラグインを使うことをお勧めする。このプラグインには、このタスクを処理してくれるコード・スニペットが組み込まれている。

コード・スニペットを選択し、サイトに自動挿入します。スニペットを有効にして更新し、変更を保存します。

REST APIを有効にして動作させていても、時折問題に遭遇することがある。ここでは、私が遭遇した最も一般的な問題とその解決方法を紹介する。
これは私がよく目にするエラーだ。APIエンドポイントにアクセスしようとすると、WordPressはページが存在しないかのように404を返す。
十中八九、これはパーマリンクの問題である。WordPressは、APIリクエストを正しくルーティングするために(Apacheサーバーで).htaccessルールを使用します。移行やサーバーの変更後に、これらのルールが破損したり、正しく再生成されないことがあります。
WordPressダッシュボードの設定 " パーマリンクに移動します。何も変更しないでください。変更を保存をクリックするだけです。WordPressがリライトルールを再生成し、APIが再び動き出します。

401は "unauthorized "を意味する。403は "forbidden "を意味する-あなたはクレデンシャルを提供したが、彼らはこのアクションの権限を持っていない。
アプリケーションパスワードが正しく入力されているか確認してください(スペースがなく、正しいユーザー名)。ユーザーアカウントが、あなたが行おうとしていることに適した機能を持っていることを確認してください。
コーディングが不十分なプラグインやテーマが、REST API の機能を妨害していることがあります。WordPressの標準的なトラブルシューティングプロセスを使用してください:すべてのプラグインを無効にし、デフォルトのテーマ(Twenty Twenty-Fourなど)に切り替え、APIをテストしてください。
もしうまくいったら、原因が見つかるまでプラグインをひとつずつ有効にしてください。その後、そのプラグインの開発者に連絡するか、別のプラグインを探してください。
これらは、あるドメインのウェブ・アプリケーションが異なるドメインのAPIにアクセスしようとすると、ブラウザのコンソールに表示される。CORS(Cross-Origin Resource Sharing)はブラウザのセキュリティ機能です。デフォルトでこれらのリクエストをブロックします。
この修正には、アプリケーションのドメインからのリクエストを明示的に許可する特定のHTTPヘッダーをWordPressサーバーに追加する必要があります。これには通常、.htaccessファイルを編集するか、ホスティングコントロールパネルでヘッダーを設定する必要があります。
CORSエラーが表示される場合は、ヘッドレスまたは非連結セットアップで作業していることになり、それらを解決するにはサーバーレベルのアクセスが必要になる。
はい、WordPress のコア API は設計上安全です。WordPressのユーザーロールと能力システムを尊重し、公開エンドポイントはあなたのサイトですでに公開されているデータのみを公開します。
他のアプリケーションがWordPressサイトのREST APIに接続してコンテンツを読み込んだり変更したりできるほか、WordPressを使用して気象サービスや決済プロセッサなどのサードパーティAPIに接続することもできます。
認証にはアプリケーションパスワードを使用し、サイト全体でHTTPSを強制し、WordPressのコア、テーマ、プラグインを常に最新の状態に保つ。悪意のあるリクエストをフィルタリングするために、ウェブアプリケーションファイアウォール(WAF)の追加を検討してください。
APIは、投稿、ページ、ユーザー、タクソノミ、メディア、コメント、設定へのプログラムによるアクセスを提供します。WooCommerceのようなプラグインは、追加機能のために独自のカスタムエンドポイントを追加することができます。
WordPress REST APIは、WordPressを従来のコンテンツ管理システムから真のアプリケーションフレームワークへと変貌させます。それはもうウェブサイトを構築するためだけのものではありません。
このAPIは架け橋です。WordPress を最新のウェブアプリケーション、モバイルアプリ、サードパーティのサービスにつなぎます。この API の仕組みを理解することで、サイトのアーキテクチャについてより適切な判断を下したり、問題のトラブルシューティングを迅速に行ったり、開発者とより効果的にコミュニケーションを取ったりすることができます。
WordPressサイトのデータは、訪問者が見るページからREST APIが他のアプリケーションに提供するコンテンツまで、すべてのエンジンです。そのデータの保護は譲れません。
Duplicator Proは、WordPressインストール全体をバックアップする信頼性の高い方法を提供します。ヘッドレス設定を試したり、新しいアプリを接続したりする前に、フルバックアップを実行してください。Duplicator Proを使えば、自動バックアップをスケジュールすることができ、貴重なコンテンツが安全であるという安心感を得ることができます。
ここにいる間、私はあなたがこれらの他の厳選されたWordPressリソースを気に入ると思います:
情報開示私たちのコンテンツは読者支援型です。つまり、あなたが私たちのリンクをクリックした場合、私たちはコミッションを得る可能性があります。私たちは、読者に付加価値をもたらすと信じる製品のみを推薦します。