WordPress REST APIを理解して外部システムと連携する方法

CMS開発

WordPress REST APIとは

WordPressはブログや企業サイトなどで広く使われていますが、管理画面だけではなくREST APIを通じても操作ができます。 このAPIを使うことで、記事データの取得や投稿、更新といった作業を外部のアプリケーションから実行できるようになります。

REST APIはHTTP通信をベースにしていて、エンドポイントへリクエストを送るとJSON形式のレスポンスが返ってきます。 皆さんがJavaScriptやPythonなどの言語からHTTPリクエストを送れば、WordPressを土台にした柔軟な仕組みを構築できるでしょう。

管理画面に直接ログインしなくてもデータのやり取りができるため、いわゆるヘッドレスCMS的な使い方も可能です。 たとえばReactやVue.jsなどのフロントエンドフレームワークから呼び出して、動的なコンテンツを表示することがよくあります。

外部システムと連携するには、APIキーや認証情報などの準備が必要になります。 これらを適切に設定すれば、自前のサービスやモバイルアプリから投稿管理やユーザー管理を実現できます。

WordPress REST APIはあらかじめ有効化されている場合が多いですが、セキュリティなどの観点から必要最低限の設定は欠かせません。 このあたりの詳細はのちほど解説します。

WordPress REST APIでできること

APIを使えば、自作アプリや外部サービスとの連携がしやすくなります。 ここでは主な活用シーンを簡単にまとめます。

  • 記事データの取得や表示を外部サイトへ埋め込む
  • 新規投稿や更新をプログラムから実行する
  • カスタム投稿タイプやカスタムフィールドのデータを取得する
  • モバイルアプリから投稿を参照して、いつでも最新情報を表示する
  • SPA(シングルページアプリケーション)でWordPressをバックエンドとして利用する

これらを組み合わせれば、WordPressを単なるCMSにとどめず、あらゆるサービスの一部として活用できるようになります。 API設計に沿った形でデータのやり取りができるため、コードの保守性も保ちやすいです。

基本的なエンドポイントとJSONレスポンス

WordPressのREST APIは、標準で/wp-json/wp/v2/というパスを中心に設計されています。 記事を取得する場合には、以下のようなエンドポイントにGETリクエストを送ります。

/wp-json/wp/v2/posts

これで全ての投稿データがJSON形式で返ってきます。 特定の投稿を取得したいときは以下のようにIDを指定します。

/wp-json/wp/v2/posts/123

返ってくるJSONの例を見てみましょう。

{
  "id": 123,
  "date": "2025-01-20T12:00:00",
  "slug": "example-post",
  "title": {
    "rendered": "サンプル記事"
  },
  "content": {
    "rendered": "<p>ここに本文が入ります</p>"
  },
  "excerpt": {
    "rendered": "<p>ここに抜粋が入ります</p>"
  }
}

titleやcontentなどの情報が含まれているので、必要なところだけを抜き出して画面表示に使います。 カスタム投稿タイプやページなども同様の仕組みで取得できます。

記事を取得するJavaScriptの例

実際にJavaScriptからデータを取得するときは、fetch関数を使う方法がわかりやすいです。 以下の例では、投稿一覧を取得してタイトルをコンソールに出力しています。

async function getPosts() {
  const response = await fetch("https://example.com/wp-json/wp/v2/posts");
  const data = await response.json();

  data.forEach(post => {
    console.log(post.title.rendered);
  });
}

getPosts();

皆さんがReactなどのフレームワークを使っている場合でも、同じようにREST APIを呼び出すことができます。 外部から呼び出せるため、ワードプレスの管理画面とは独立した見せ方を作ることができるでしょう。

投稿を新規作成するときの流れ

WordPress REST APIは投稿を作ることも可能です。 ただし、GETリクエストとは違い、認証が必要になります。 代表的な認証方法としてはBasic認証、Application Password、OAuthなどがあります。

以下の例はBasic認証を使い、記事を新規作成する場合です。 IDやパスワードを組み合わせた認証ヘッダを付けてリクエストを送ります。

async function createPost() {
  const credentials = btoa("ユーザー名:パスワード");
  const response = await fetch("https://example.com/wp-json/wp/v2/posts", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Basic ${credentials}`
    },
    body: JSON.stringify({
      title: "新しい記事のタイトル",
      content: "本文テキスト",
      status: "publish"
    })
  });

  const result = await response.json();
  console.log(result);
}

createPost();

titleやcontentなどをJSONに含めてPOSTすれば、新しい記事が公開状態で作成されます。 実行にはユーザーの権限が必要なので、管理者や投稿権限を持つユーザーの情報を使ってください。

認証方法ごとのポイント

WordPress REST APIでは複数の認証方法が選べます。 どれを使うかは運用スタイルやセキュリティ要件によります。

Basic認証

比較的設定が簡単ですが、通信内容を暗号化する(HTTPS必須)などの対策が大事です。 ユーザー名とパスワードを直接やり取りするため、第三者に漏れないように気をつけましょう。

Application Password

WordPressの管理画面からアプリケーション用のパスワードを発行する方法です。 パスワードを停止させるのも容易なので、管理しやすい面があります。

OAuth

より複雑ですが、トークンベースでやり取りができるため、ユーザー情報を直接さらさなくて済みます。 大規模なサービスと連携する場合に向いています。

パスワード類を公開リポジトリにそのまま置くのは避けてください。 暗号化や環境変数の利用などで情報を保護することをおすすめします。

ヘッドレスCMSとしての活用

WordPressをヘッドレスCMSとして利用すれば、WordPressが持つ管理機能をそのまま使いつつ、フロントエンドは自由に実装できます。 いわゆるマルチチャネル対応ができるため、ウェブサイトとスマホアプリの両方に同じコンテンツを配信するといった構成が実現しやすいです。

具体的には、既存の投稿タイプやカテゴリーをそのまま維持しながら、REST APIを通じてJSONデータを提供する形にします。 フロントエンドやアプリ側では、JSONの内容をパースして表示のみを担当するため、見た目の変更や動作の追加が比較的やりやすいでしょう。

また、WordPressプラグインでREST APIのエンドポイントを追加できる場合があります。 カスタムフィールドを含めて取得したいときは、関連するプラグインを活用すると効率的です。

実務での使いどころ

仕事で導入するなら、たとえば既存のWordPressサイトをそのままにして、追加機能だけAPI経由でつなぐ形を考えてみてください。 フロントエンド開発者とサーバーサイド担当が切り離されているときにも、API仕様書を共有しやすいというメリットがあります。

  • 商品管理システムと連携し、記事として商品情報を同期
  • Slackやメールに通知を送る際にWordPressのAPIを経由して情報を集約
  • モバイルアプリで検索結果を表示し、投稿データとあわせてユーザーがコメントを書き込む

これらの事例では、同じAPIを使い回すだけで違うサービスに接続できます。 データを一元化することで、管理コストを軽減しやすくなるでしょう。

セキュリティ上の考慮点

REST APIは外部からアクセスできるため、誰でもデータを取得できる設定だと困るケースがあるかもしれません。 管理画面同様、公開しても良い情報と制限したい情報を分けることが重要です。

エンドポイントごとにアクセス制限を設けたり、認証が必要な操作だけを限定したりするのが基本です。 このあたりはプラグインやテーマのカスタマイズによって変わるため、サイトの構成に合わせて調整してください。

REST APIを無効化するかどうか判断する場面もあるでしょう。 もし使わない場合はAPIを無効化し、将来的に必要になったときに改めて有効化するやり方もあります。

トラブルシューティングのヒント

初心者の皆さんが最初にハマりやすいのは、認証エラーやパーミッションの問題です。 正しいユーザー権限でログインしているか、APIキーやパスワードが合っているかを再確認してみてください。

エンドポイントが404エラーになる場合は、サイトのパーマリンク設定やバージョン互換性が原因になることがあります。 パーマリンク設定を更新したり、テーマやプラグインを最新にするなどの対策を試すと解決することも多いです。

また、ローカル環境や開発環境でSSLが設定されていない場合、Basic認証が思うように動かないことがあります。 HTTPS通信を行うかどうかのチェックは早めにやっておくほうがいいでしょう。

まとめ

WordPress REST APIは記事やページのデータを外部アプリケーションから簡単に扱える仕組みです。 初心者の皆さんでも、基本のGETリクエストからPOSTリクエストまでを理解すれば、データ連携の基礎が一通り見えてくるはずです。

認証方法やセキュリティ対策を整えておけば、WordPressを中心にした豊かなエコシステムを構築できます。 フロントエンドとバックエンドを分離するメリットは大きく、チーム開発でもAPIを介して役割分担が可能です。

もしこれから新しい機能を実装するなら、WordPress REST APIを活用して、外部システムとの連携を検討してみてください。 以上のポイントを押さえれば、皆さんのサイトがより多様な場面で活躍するでしょう。

WordPressをマスターしよう

この記事で学んだWordPressの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。