WordPressでは、ユーザーごとにAPIキーを発行することで、特定のAPIへのアクセスを制限できます。この記事では、既存のすべてのユーザーにAPIキーを一括で発行する方法を解説します。この方法を使うことで、手動で個別のユーザーにAPIキーを発行する手間を省けます。
必要なコードを追加
まず、APIキーを既存のすべてのユーザーに発行するためのコードを追加します。このコードは、管理者ユーザーが実行することで、サイト内のすべてのユーザーにAPIキーを生成し、保存します。
/**
* すべての既存ユーザーにAPIキーを発行する
*/
function generate_api_keys_for_existing_users() {
// 管理者以外がアクセスした場合は処理しない
if (!current_user_can('manage_options')) {
return;
}
// すべてのユーザーを取得
$users = get_users(array('fields' => array('ID')));
foreach ($users as $user) {
$user_id = $user->ID;
// すでにAPIキーがあるか確認
$api_key = get_user_meta($user_id, 'api_key', true);
if (empty($api_key)) {
// APIキーを発行
$new_api_key = bin2hex(random_bytes(16)); // 32文字のAPIキー
update_user_meta($user_id, 'api_key', $new_api_key);
}
}
echo "すべてのユーザーにAPIキーを発行しました。";
exit;
}
APIキー発行処理の実行方法
上記のコードは、管理者がWordPressサイトのURLに特定のクエリパラメータ(generate_api_keys=1
)を追加することで実行できます。この処理は、一度だけ実行することで、すべてのユーザーにAPIキーが発行されます。
以下のコードをfunctions.php
に追加し、WordPressサイトのURLにアクセスすることで実行します。
// URLに `?generate_api_keys=1` を追加すると実行
if (isset($_GET['generate_api_keys']) && $_GET['generate_api_keys'] == '1') {
generate_api_keys_for_existing_users();
}
実行方法
次に、WordPressの管理者としてログインし、ブラウザのURLバーに次のように入力します。
https://example.com/?generate_api_keys=1
このURLを入力すると、すべてのユーザーにAPIキーが発行されます。発行が完了すると、「すべてのユーザーにAPIキーを発行しました。」というメッセージが表示されます。
重要な注意点
- 管理者専用: この処理は管理者ユーザー専用です。通常のユーザーがアクセスしても動作しないように、
current_user_can('manage_options')
で管理者のみが実行できるようにしています。 - APIキーの重複確認: すでにAPIキーが発行されているユーザーには、新たにAPIキーが発行されないようにしています。
- 一度だけ実行: このコードは一度だけ実行すれば十分です。すべてのユーザーにAPIキーを一度で発行できます。
APIキーの利用方法
一度APIキーを発行した後、ユーザーはそれを用いて、APIリクエストを認証することができます。リクエスト時には、以下のようにX-API-Key
ヘッダーにAPIキーを付加して送信します。
curl -H "X-API-Key: YOUR_API_KEY" "https://example.com/wp-json/reviews/v1/list/"
まとめ
この方法を使うことで、すべての既存ユーザーにAPIキーを発行し、APIへのアクセスを安全に管理することができます。管理者のみが実行できるように制限をかけ、ユーザーごとのAPIキーを一括で発行する手軽な方法を提供します。