REST APIとは?

REST API(REpresentational State Transfer Application Programming Interface)は、HTTPリクエストを使ってデータの取得・作成・更新・削除を行うための仕組みです。

WordPress REST APIでできること

強力な機能:WordPress 4.7以降、REST APIが標準搭載され、WordPressをヘッドレスCMSとして利用できるようになりました。

REST APIの活用例

1. ヘッドレスCMS

WordPressをバックエンド(データ管理)として使い、フロントエンドは別の技術で構築します。

2. 外部サービスとの連携

3. モバイルアプリ

WordPressの記事を表示するiOS/Androidアプリを開発できます。

4. マイクロサービス

WordPress以外のシステムからWordPressのデータを利用できます。

REST APIの基本的な使い方

エンドポイント

REST APIにアクセスするURLをエンドポイントと呼びます。

基本的なエンドポイント

ベースURL:https://yoursite.com/wp-json/wp/v2/

主要なエンドポイント

記事を取得する(GET)

ブラウザで確認

最も簡単な方法は、ブラウザで以下のURLにアクセスすることです。

https://yoursite.com/wp-json/wp/v2/posts

最新の投稿一覧がJSON形式で表示されます。

JavaScriptで取得(fetch API)

fetch('https://yoursite.com/wp-json/wp/v2/posts')
  .then(response => response.json())
  .then(data => {
    console.log(data);
    // 記事のタイトルを表示
    data.forEach(post => {
      console.log(post.title.rendered);
    });
  })
  .catch(error => console.error('Error:', error));

パラメータで絞り込み

例:/wp/v2/posts?per_page=5&orderby=date&order=desc
最新5件の投稿を取得

記事を作成する(POST)

記事を作成するには、認証が必要です。

認証方法

1. Application Passwords(推奨)

WordPress 5.6以降で利用可能な、最も安全な認証方法です。

Application Passwordsの作成
  1. WordPress管理画面で「ユーザー」→「プロフィール」
  2. 「Application Passwords」セクションまでスクロール
  3. 「New Application Password Name」に名前を入力(例:API Access)
  4. 「Add New Application Password」をクリック
  5. 表示されたパスワードをコピー(スペース含む)
重要:Application Passwordsは一度しか表示されません。必ず保存してください。

2. JWT(JSON Web Token)

プラグインを使った高度な認証方法です。

記事作成のサンプルコード(JavaScript)

const username = 'your_username';
const password = 'xxxx xxxx xxxx xxxx xxxx xxxx'; // Application Password

const credentials = btoa(username + ':' + password);

fetch('https://yoursite.com/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + credentials
  },
  body: JSON.stringify({
    title: 'APIから投稿したテスト記事',
    content: 'REST APIを使って記事を作成しました。',
    status: 'publish' // publish, draft, privateなど
  })
})
.then(response => response.json())
.then(data => console.log('記事作成成功:', data))
.catch(error => console.error('エラー:', error));

記事を更新する(PUT/PATCH)

特定の記事を更新

fetch('https://yoursite.com/wp-json/wp/v2/posts/123', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + credentials
  },
  body: JSON.stringify({
    title: '更新されたタイトル',
    content: '更新された本文'
  })
})
.then(response => response.json())
.then(data => console.log('更新成功:', data));

記事を削除する(DELETE)

fetch('https://yoursite.com/wp-json/wp/v2/posts/123', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Basic ' + credentials
  }
})
.then(response => response.json())
.then(data => console.log('削除成功:', data));
警告:削除は取り消せません。必ず慎重に実行してください。

セキュリティとアクセス制限

1. 読み取り専用に制限

デフォルトでは、ログインしていないユーザーでも投稿一覧を取得できます。これを制限するには、プラグインやカスタムコードを使います。

2. Application Passwordsの管理

3. CORSの設定

別ドメインからのアクセスを許可する場合、CORS設定が必要です。

セキュリティ:REST APIはデフォルトで有効です。不要な場合はプラグインで無効化することを検討してください。

カスタムエンドポイントの作成

独自のエンドポイントを作成することもできます(上級者向け)。

サンプル:カスタムエンドポイント

// functions.phpに追加
add_action('rest_api_init', function() {
  register_rest_route('myplugin/v1', '/hello', array(
    'methods' => 'GET',
    'callback' => 'my_custom_endpoint',
  ));
});

function my_custom_endpoint() {
  return array(
    'message' => 'Hello from custom endpoint!',
    'timestamp' => current_time('mysql')
  );
}

アクセス:https://yoursite.com/wp-json/myplugin/v1/hello

便利なプラグイン

1. JWT Authentication for WP REST API

JWT認証を有効にするプラグインです。

2. WP REST API Controller

REST APIのアクセス制御を簡単に設定できます。

3. ACF to REST API

Advanced Custom Fields のデータをREST APIで取得できるようにします。

4. WP REST Cache

REST APIのレスポンスをキャッシュして高速化します。

REST APIのテストツール

1. Postman

APIのテストに最適なツールです。GUIで簡単にリクエストを送信できます。

2. Insomnia

Postmanと同様のAPIテストツールです。

3. cURL(コマンドライン)

コマンドラインからAPIをテストできます。

curl https://yoursite.com/wp-json/wp/v2/posts

よくあるエラーと解決法

1. 404 Not Found

2. 401 Unauthorized

3. 403 Forbidden

4. CORS Error

まとめ

WordPress REST APIは、WordPressを単なるブログツールから、強力なコンテンツ管理プラットフォームへと進化させる機能です。

REST API利用のチェックリスト

学習リソース:WordPress公式の「REST API Handbook」(https://developer.wordpress.org/rest-api/)で詳細を学べます。

関連ページ