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() を使用 |