WP REST APIは、WordPress のデータを外部から取得・操作できるようにするためのAPIです。これを利用することで、JavaScriptや他のプログラミング言語からWordPressの投稿やユーザー情報などを取得・更新・削除できます。今回は、WP RESET APIの基本的な使い方などをまとめていきたいと思います。
- 投稿データの取得・作成・更新・削除
- ユーザー情報の取得・管理
- カスタム投稿タイプやカスタムフィールドの操作
- 非同期通信を用いた動的なデータ更新
- JavaScriptフロントエンドとWordPressを統合したアプリ開発
WP REST API はデフォルトで /wp-json/wp/v2/ のエンドポイントを提供しています。
fetch('/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => console.log(data));このコードを実行すると、WordPressの投稿データがJSON形式で取得できます。
fetch('/wp-json/wp/v2/posts/1')
.then(response => response.json())
.then(data => console.log(data));ID1の投稿データを取得する例です。
投稿を作成するには、POSTリクエストを送る必要があります。この操作には認証が必要です。
fetch('/wp-json/wp/v2/posts', {
method: 'POST', // POST
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
},
body: JSON.stringify({
title: '新しい投稿',
content: 'これは WP REST API を使って作成した投稿です。',
status: 'publish'
})
})
.then(response => response.json())
.then(data => console.log(data));このコードでは、YOUR_ACCESS_TOKENに適切な認証トークンを設定し、titleとcontentを指定することで、新規投稿を作成します。
fetch('/wp-json/wp/v2/posts/1', {
method: 'PUT', // PUT
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
},
body: JSON.stringify({
title: 'タイトルを更新しました'
})
})
.then(response => response.json())
.then(data => console.log(data));ID1の投稿タイトルを更新する例です。
fetch('/wp-json/wp/v2/posts/1', {
method: 'DELETE', // DELETE
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
})
.then(response => response.json())
.then(data => console.log(data));ID1の投稿を削除するコードです。
fetch('/wp-json/wp/v2/categories')
.then(response => response.json())
.then(data => console.log(data));カテゴリーの一覧を取得できます。
const formData = new FormData();
formData.append('file', imageFile);
fetch('/wp-json/wp/v2/media', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
},
body: formData
})
.then(response => response.json())
.then(data => console.log(data));imageFileにアップロードするファイルを指定すると、WordPressに画像をアップロードできます。
PHPを使ってオリジナルの REST APIを作ることも可能です。
function my_custom_endpoint() {
return new WP_REST_Response(['message' => 'Hello, World!'], 200);
}
add_action('rest_api_init', function() {
register_rest_route('myplugin/v1', '/hello/', [
'methods' => 'GET',
'callback' => 'my_custom_endpoint'
]);
});/wp-json/myplugin/v1/hello/にアクセスするとHello, World!を返します。
WP REST API を使用する際には、以下の点に注意が必要です。
投稿の作成・編集・削除などの操作を行う場合、認証が必要になります。
- JWT Authentication for WP REST APIプラグインを利用することで、トークン認証が可能になります。
- Basic認証やOAuthを設定する方法もありますが、セキュリティに注意が必要です。
別のドメイン(例: example.com から sample.com)から API を利用する場合、CORS(Cross-Origin Resource Sharing)の設定が必要です。
functions.phpに以下のコードを追加すると、CORSを許可できます。
function add_cors_headers() {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Authorization, Content-Type");
}
add_action('rest_api_init', 'add_cors_headers');APIを介してデータを変更できるユーザーを制限しないと、サイトのセキュリティが脆弱になります。
- 管理者権限を持つユーザーだけが投稿の作成・編集・削除ができるようにする
current_user_can('edit_posts')などを使い、ユーザー権限をチェックする
WordPressのREST APIはデフォルトで多くの情報を公開します。不要なエンドポイントは無効化することで、セキュリティを向上できます。
wp-json/wp/v2/usersでユーザー情報が取得できてしまうため、以下のコードで無効化可能です。
function disable_rest_endpoints($endpoints) {
if (isset($endpoints['wp/v2/users'])) {
unset($endpoints['wp/v2/users']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'disable_rest_endpoints');WP REST API を使うことで、WordPress のデータを動的に操作できるようになります。フロントエンドで JavaScript を活用し、非同期でデータを取得・更新することで、より柔軟なアプリケーションを作成できます。
| 機能 | 方法 |
|---|---|
| 投稿取得 | GET /wp-json/wp/v2/posts |
| 投稿作成 | POST /wp-json/wp/v2/posts |
| 投稿更新 | PUT /wp-json/wp/v2/posts/{id} |
| 投稿削除 | DELETE /wp-json/wp/v2/posts/{id} |
| カテゴリー取得 | GET /wp-json/wp/v2/categories |
| 画像アップロード | POST /wp-json/wp/v2/media |
| カスタムエンドポイント | register_rest_route() を使用 |

