①wp-content/plugins
内に
②chatgpt-admin-tool
フォルダを作成し、
③chatgpt-admin-tool.php
という名前で保存してください。
chatgpt-admin-tool.php
<?php /* Plugin Name: ChatGPT Admin Tool (Multisite Ready) Description: WordPress管理画面でChatGPTに質問できる簡易ツール(マルチサイト対応) Version: 1.1 Author: Your Name */ // 管理メニューに「ChatGPT」を追加(マルチサイトでも子サイトで使用可能) add_action('admin_menu', function () { if (current_user_can('manage_options')) { add_menu_page( 'ChatGPT Admin', 'ChatGPT', 'manage_options', 'chatgpt-admin', 'chatgpt_admin_page', 'dashicons-format-chat' ); } }); // 管理画面に表示されるページの内容 function chatgpt_admin_page() { ?> <div class="wrap"> <h1>💬 ChatGPT 管理アシスタント</h1> <textarea id="chatInput" rows="4" style="width:100%;"></textarea><br> <button id="sendToGPT" class="button button-primary">ChatGPTに送信</button> <div id="responseBox" style="margin-top:1em; white-space:pre-wrap; background:#f9f9f9; padding:10px; border:1px solid #ccc;"></div> </div> <script> document.getElementById('sendToGPT').addEventListener('click', async () => { const prompt = document.getElementById('chatInput').value; const responseBox = document.getElementById('responseBox'); responseBox.innerText = 'ChatGPTからの応答を待っています...'; const res = await fetch('<?php echo esc_url(admin_url('admin-ajax.php')); ?>', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ action: 'chatgpt_request', prompt: prompt }) }); const data = await res.json(); responseBox.innerText = data.response; }); </script> <?php } // Ajaxハンドラの登録(全サイト共通) add_action('wp_ajax_chatgpt_request', 'handle_chatgpt_request'); // ChatGPTへのリクエスト処理 function handle_chatgpt_request() { $prompt = sanitize_text_field($_POST['prompt']); // APIキーの取得(必要に応じて get_site_option に変更可能) $api_key = get_option('chatgpt_api_key'); if (empty($api_key)) { wp_send_json(['response' => 'APIキーが設定されていません。']); } $response = wp_remote_post('https://api.openai.com/v1/chat/completions', [ 'headers' => [ 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $api_key, ], 'body' => json_encode([ 'model' => 'gpt-3.5-turbo', 'messages' => [ ['role' => 'system', 'content' => 'あなたは親切なWordPressアシスタントです。'], ['role' => 'user', 'content' => $prompt], ], 'temperature' => 0.7, ]) ]); if (is_wp_error($response)) { wp_send_json(['response' => '通信エラーが発生しました。']); } $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); if (isset($data['choices'][0]['message']['content'])) { wp_send_json(['response' => $data['choices'][0]['message']['content']]); } else { wp_send_json(['response' => 'ChatGPTの応答を取得できませんでした。']); } }
動かない場合の想定される原因と解決策
① OpenAI APIキーが間違っている / 空欄になっている
確認:
-
本物のAPIキー(
sk-...
で始まる文字列)を入力していますか?
修正例:
② OpenAI APIのレスポンス形式が想定と異なっている(構造変更やエラー時)
現状の取得処理:
上記が存在しない場合(例:APIエラー、上限超過、キー無効など)は null
になるため、エラーメッセージが出力されます。
改善版(レスポンスチェック強化):
以下のように、レスポンス全体をログに出力したり、エラー原因を把握できるようにします:
③ API通信自体が失敗している(wp_remote_post()
が失敗)
対処:
-
通信に失敗した場合は
is_wp_error($response)
でログを出力すると原因が分かります。
ログ強化:
④ APIの利用制限/優れた追い越すアカウント未認証
✅ 確認方法:
-
httpsプラットフォーム.openai.com /アカウント/使用状況 でAPI使用状況を確認
-
無料アカウントにはAPI利用権がないことがあります(ChatGPT Proとは別)
⑤:使用状況を確認
https://platform.openai.com/account/usage
ここで「今月の使用量」「上限」「支払いステータス」が確認できます。
⑥:課金を有効化
https://platform.openai.com/account/billing/overview
上記ページで、支払い方法(クレカ)を登録する必要があります。
-
無料ユーザーは $0 のままだとAPIの利用が制限されます
-
クレカを登録し、「Pay-as-you-go(使った分だけ課金)」を有効にすることで制限解除されます
注意点:ChatGPTとAPIは別物
ChatGPT Plus(月額$20) | OpenAI API |
---|---|
ブラウザ上のチャット利用 | 外部アプリ(WordPress等)から利用 |
ChatGPT(chat.openai.com)にログインして使う | APIキーを発行して外部サービスと連携 |
月額固定 | 従量課金(使った分だけ請求) |
ChatGPT Plusに登録していても、APIの利用には別途課金設定が必要です。
まとめ
どうしても「ワードプレスの管理画面内でChatgptを使用したい時のみ」しか今のところは必要がないかと思われます。(従量課金なので)
必要な方は、コピーしてお使いください。