自分だけのクイズを作成しよう - Quipha
スポンサーリンク

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

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

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

ChatGPTのAPIキーの取得

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

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

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');

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

コメント

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