広告

【ChatGPT API連携】WordPressプラグインを作ろう

【ChatGPT API連携】WordPressプラグインを作ろう AI

当サイトではアフィリエイト広告を利用しています。

ChatGPTのAPIキーの取得

ChatGPTのAPIを利用するためには、アカウントを作成し、APIキーを取得する必要があります。

アカウントの作成方法は以下の記事を参考にしてください。

【ChatGPT】エンジニアが試してみた
何かと話題のAI、「ChatGPT」を試してみました。

APIの登録方法については以下の記事を参考にしてください。

【ChatGPT】OpenAI API 有料アカウント登録
OpenAI APIの有料アカウントの登録方法をまとめました。

APIキーの利用には料金がかかります。詳しくはOpenAIのサイトをご確認ください。

ログインした状態で、以下のサイトにアクセスします。

platform.openai.com

右上のメニューから、「View API keys」をクリックします。

OpenAI View API keys

「Create new secret key」をクリックし、APIキーを作成します。

OpenAI Create new secret key

APIキーが表示されます。
この画面でしかコピーできず、再度表示することができませんので注意してください。

OpenAI API Key

APIキーは絶対に他人に知られないようにしましょう。

実装

はじめに

それでは実装を始めていきます。
一通り解説を行いますが、完成版のソースにつきましてはGitHubリポジトリを参照してください。

GitHub – chigusa-web/wp-gpt-support: WordPress プラグイン ChatGPTチェック
WordPress プラグイン ChatGPTチェック. Contribute to chigusa-web/wp-gpt-support development by creating an account on GitHub.

実装する場合は、テスト環境のWordPressで行ってください。

プラグインを作成

WordPressのプラグインフォルダに「wp-gpt-support」フォルダを作成し、wp-gpt-support.phpファイルを作成します。

\wp-gpt-support
└─\wp-gpt-support.php

以下のように、プラグインに関する情報を記載します。

wp-gpt-support.php
<?php

/**
 * Plugin Name:       WP GPT Support
 * Description:       ChatGPTサポート
 * Version:           1.0.0
 * Author:            Chigusa
 * Author URI:        https://chigusa-web.com/
 * License:           MIT
 */

if (!defined('ABSPATH')) exit;

この時点でプラグイン一覧に表示されます。

WordPress プラグイン開発 一覧

メニューの作成

管理画面のメニューをカスタマイズしましょう。
以下のファイルを作成します。

\wp-gpt-support
└─\menus.php

管理画面のメニューに独自のメニューを追加します。

WordPress プラグイン開発 独自メニュー

今回はチェック画面と設定画面を作成するため、以下のようにコーディングします。

<?php

if (!defined('ABSPATH')) exit;

/**
 * 管理画面にメニューを追加
 */
add_action('admin_menu', 'wpdocs_register_wp_gpt_support');
function wpdocs_register_wp_gpt_support()
{
    add_menu_page(
        'GPT Support',
        'GPT Support',
        // 権限
        'manage_options',
        'wp_gpt_support',
        'page_wp_gpt_support',
        // アイコン
        'dashicons-editor-spellcheck',
        // メニュー位置
        999
    );

    // チェック画面
    add_submenu_page(
        'wp_gpt_support',
        'チェック',
        'チェック',
        'manage_options',
        'wp_gpt_support_check',
        'page_wp_gpt_support_check'
    );

    // 設定画面
    add_submenu_page(
        'wp_gpt_support',
        '設定',
        '設定',
        'manage_options',
        'wp_gpt_support_settings',
        'page_wp_gpt_support_settings'
    );

    // トップレベルのメニューを削除
    remove_submenu_page('wp_gpt_support', 'wp_gpt_support');
}

add_menu_pageやadd_submenu_pageを使用します。
引数はメニューのタイトルや権限、アイコンや表示位置を指定します。

wp-gpt-support.phpに以下を追記します。
この時点でメニューが表示されることを確認しましょう。

// メニュー
require_once(plugin_dir_path(__FILE__) . 'menus.php');
広告

設定画面の作成

設定画面を作成します。

\wp-gpt-support
└─\pages\page_settings.php

APIキーを設定できる画面を作成します。

WordPress プラグイン開発 設定画面作成

HTMLではAPIの入力エリアを用意し、既に登録済みの場合はマスクして表示します。

<?php

if (!defined('ABSPATH')) exit;

/**
 * ページ: 設定画面
 */
function page_wp_gpt_support_settings()
{
    // 設定保存
    wp_gpt_support_settings_update();

    if (isset($_POST['settings_submit'])) {
        $api_key = sanitize_text_field($_POST['api_key']);
    } else {
        // マスクして表示
        $api_key = get_api_key_mask();
    }

?>
    <div class="wrap">
        <h1>WP GPT Support 設定</h1>

        <?php settings_errors('wp_gpt_support_options'); ?>

        <form method="post">
            <?php wp_nonce_field('wp_gpt_support_settings', 'wp_gpt_support_settings_nonce'); ?>

            <table class="form-table">
                <tr valign="top">
                    <th scope="row">ChatGPT API Key</th>
                    <td><input type="text" name="api_key" value="<?php echo esc_attr($api_key); ?>" /></td>
                </tr>
            </table>

            <input type="submit" name="settings_submit" class="button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
        </form>
    </div>
<?php
}

/**
 * 設定保存
 */
function wp_gpt_support_settings_update()
{

    // 権限
    if (!current_user_can('manage_options')) {
        return;
    }

    if (!isset($_POST['settings_submit'])) {
        return;
    }

    // CSRF
    if (!check_admin_referer('wp_gpt_support_settings', 'wp_gpt_support_settings_nonce')) {
        return;
    }

    $api_key = sanitize_text_field($_POST['api_key']);

    if ($api_key != get_api_key_mask()) {
        update_option('wp_gpt_support_settings_api_key', $api_key);
    }

    echo '<div class="updated"><p>保存しました</p></div>';
}

update_optionを使用して、WordPressに設定値を登録します。

設定を取得する処理を作成します。

\wp-gpt-support
└─\options.php

APIキーを取得する処理と、マスクして取得する処理を作成しました。

<?php

if (!defined('ABSPATH')) exit;

/**
 * APIキーの取得
 */
function get_api_key()
{
    return get_option('wp_gpt_support_settings_api_key');
}

/**
 * APIキーの取得(マスク)
 */
function get_api_key_mask()
{
    $key = get_option('wp_gpt_support_settings_api_key');
    if (empty($key)) {
        return "";
    } else {
        $first = substr($key, 0, 5);
        return $first . '*******';
    }
}

wp-gpt-support.phpに以下を追記します。

// 設定
require_once(plugin_dir_path(__FILE__) . 'options.php');

// 設定画面
require_once(plugin_dir_path(__FILE__) . 'pages/page_settings.php');

この時点で、設定画面が表示されること、設定値が登録できることを確認しましょう。

AIChatGPTPHPWordpressツールプログラミング作ってみよう
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。 また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。 定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。 パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。 Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。 例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。 いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。 テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。 初心者の方はもちろん、もっと速く計算したい方にも役立ちます。 5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました