ChatGPT に WordPress のプラグインを書いてもらってみた

# 流行っているので ChatGPT に何かやってもらったってだけの記事
ChatGPT に関してはすぐに登録して適当に何か試してみたり、実用としては卒業式のスピーチ原稿を書いてもらったりしていたけど、以前具体的に WordPress のプラグインの用途を指定しつつコードを書いてとお願いしたら書いてもらえなかったので、今回はちょっとアプローチを変えてみた。
## 以下、実際のやり取り
**WordPress のプラグインを新規作成する際のテンプレートのコードを書いてくれませんか。**

はい、WordPress のプラグインを新規作成する際のテンプレートのコードをご提供いたします。以下が基本的なテンプレートのコードです。
```PHP
<?php
/*
Plugin Name: Your Plugin Name
Plugin URI: https://example.com/
Description: Description of your plugin
Version: 1.0
Author: Your Name
Author URI: https://example.com/
License: GPL2
*/

// プラグインの処理内容を記述する

?>
```
このコードでは、プラグインの基本情報を定義しています。具体的には、プラグイン名、プラグインの説明、作者名、バージョン番号、ライセンス情報などが含まれます。

このテンプレートのコードをベースに、プラグインの処理内容を記述していくことになります。具体的には、WordPress のアクションフックやフィルターフックを使用して、プラグインの処理を実装していきます。また、必要に応じて CSS や JavaScript を読み込むための関数も使用することができます。

プラグインの開発には、プラグイン API や WordPress の関数を使いこなすことが必要です。開発に際しては、WordPress 公式サイトのドキュメンテーションやコミュニティのサポートを活用することをおすすめします。

**このコードにトップメニューに管理画面を追加するコードを追加して頂けませんか。**

はい、トップメニューに管理画面を追加するためのコードを以下に示します。前回のコードに追記してください。
```PHP
<?php
/*
Plugin Name: Your Plugin Name
Plugin URI: https://example.com/
Description: Description of your plugin
Version: 1.0
Author: Your Name
Author URI: https://example.com/
License: GPL2
*/

// プラグインの処理内容を記述する

// トップメニューに管理画面を追加する
function your_plugin_add_admin_menu() {
    add_menu_page(
        'Your Plugin Name', // ページタイトル
        'Your Plugin', // メニュータイトル
        'manage_options', // 権限
        'your-plugin', // メニュースラッグ
        'your_plugin_admin_page', // コールバック関数
        'dashicons-admin-generic' // アイコン
    );
}
add_action( 'admin_menu', 'your_plugin_add_admin_menu' );

// 管理画面の内容を記述する
function your_plugin_admin_page() {
    echo '<div class="wrap">';
    echo '<h1>Your Plugin Name</h1>';
    echo '<p>ここに管理画面の内容を記述します。</p>';
    echo '</div>';
}
?>
```
このコードでは、`add_menu_page`関数を使用して、トップメニューにメニューアイテムを追加しています。`add_menu_page`関数の引数には、以下のような情報を指定します。
* ページタイトル
* メニュータイトル
* 権限
* メニュースラッグ
* コールバック関数
* アイコン

また、`your_plugin_admin_page`関数には、管理画面の内容を記述するためのコードを記述します。ここでは、`<h1>`タグと`<p>`タグを使用して、簡単な例として「ここに管理画面の内容を記述します。」という文言を表示しています。

これで、トップメニューに管理画面が追加されます。ただし、このコードでは、管理画面に実際に機能を追加するためのコードは含まれていません。実際に機能を追加するには、`your_plugin_admin_page`関数内に処理を記述するか、コールバック関数として別の関数を指定する必要があります。

**このコードの「 your_plugin_admin_page() 」関数内に、テキストが入力できるフォームをひとつと、それをデータベースに保存するコードを追記して頂けませんか。**

はい、以下が、`your_plugin_admin_page`関数に、テキストが入力できるフォームをひとつと、それをデータベースに保存するコードの例です。
```PHP
// 管理画面の内容を記述する
function your_plugin_admin_page() {
    // フォームの送信処理
    if (isset($_POST['your_plugin_input'])) {
        $input = $_POST['your_plugin_input'];
        update_option('your_plugin_input', $input);
        echo '<div class="notice notice-success"><p>設定を保存しました。</p></div>';
    }

    // 設定フォームの表示
    $input = get_option('your_plugin_input');
    ?>
    <div class="wrap">
        <h1>Your Plugin Name</h1>
        <form method="post" action="">
            <label for="your_plugin_input">入力欄</label>
            <input type="text" id="your_plugin_input" name="your_plugin_input" value="<?php echo esc_attr($input); ?>">
            <?php submit_button('保存'); ?>
        </form>
    </div>
    <?php
}
```
このコードでは、まずフォームの送信処理を行っています。フォームが送信された場合は、update_option関数を使用して、データベースに入力値を保存します。そして、設定を保存した旨をユーザーに伝えるために、WordPress 標準のメッセージを表示しています。

次に、設定フォームを表示するためのコードを記述しています。get_option関数を使用して、データベースから入力値を取得しています。そして、<input>タグを使用して、テキストが入力できるフォームを表示しています。submit_button関数を使用して、フォーム送信ボタンを表示しています。最後に、WordPress 標準の<div>タグを使用して、メッセージを表示しています。

これで、管理画面にテキスト入力フォームが表示され、入力された値がデータベースに保存されるようになります。

## まとめ
このコードをテキストにまとめて、 zip に圧縮してローカルのテスト環境の WordPress にインストールしたらちゃんと動きました。どこまで可能かは分かりませんが、一度に大きなことを実行させるのではなくて会話を続けながら修正を続けていくのがコツなのかもしれません。

何がいいって、まずコードを書くスピードが速いこと。すらすらと目の前でコードが書かれていくところは見ていて気持ちがいいですね。それから書いたコードに対してちゃんと説明を付けてくれるところがとても素晴らしいです。優秀なエンジニアでもコードを書いてと言えば書いてくれることはあっても、コードの説明までやってくれる人はそういないと思います。

ベースとなるコードを書いてもらってそれを自身で修正していけば完成までの時短になることは間違いなさそうですね。今までは「コピペエンジニア」って呼ばれ方があったけど、今後は何エンジニアって呼ばれるようになるのかな？