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キーを一括で発行する手軽な方法を提供します。

  
  
  
  
