①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を使用したい時のみ」しか今のところは必要がないかと思われます。(従量課金なので)
必要な方は、コピーしてお使いください。
