WordPressプラグイン開発/フォームから値を受信したデーターを独自テーブルに挿入する

動画URL→ https://youtu.be/b4evaC9F0Ko

フォームから値を受信したデーターを独自テーブルに挿入する

プログラム内に以下のようなフォームを書きます。
$form_actionは、色々だと思いますが、この例ではプラグインが起動するページのURLになるようにします。

// 入力フォーム
$form_action = '/' . $name;
$client_form = <<<END
<h3>■ 顧客を登録</h3>
<form method="post" action="$form_action">
<label> 名前:</label> <input type="text" name="client_name">
<label> テキスト:</label> <input type="text" name="text">
<p><input type="submit" value="送信"></p>
</form>
END;

フォームからのクエリーを受け取り、データベースの独自テーブルに挿入する以下のようなスクリプトを書きます。

// フォームから値を受信しレコードを挿入する
function Client_Table_Data() {
    global $wpdb;
    
    // フォームからのクエリーを受信する
    if(isset($_POST)){   
        $client_name = $_POST['client_name']; // WordPressではname属性に'name'が使えません。
        $text = $_POST['text'];
    }

    // 受信したクエリーをテーブルに挿入する
    $table_name = $wpdb->prefix. 'ktpwp_client';
    $wpdb->insert( 
        $table_name, 
        array( 
            'time' => current_time( 'mysql' ), // 自動生成される時間
            'name' => $client_name,
            'text' => $text,
        ) 
    );
}

スーパーグローバル変数の$_POST

PHP の定義済み変数の中には “スーパーグローバル” というものがあります。 これは、スクリプト全体を通してすべてのスコープで使用可能な変数のことです。 関数やメソッドの内部からアクセスする際にも global $variable; などとする必要はありません。
PHP マニュアル

フォームから送られたクエリは、$_POSTに入ります。これを

$client_name = $_POST['client_name'];
$text = $_POST['text'];

のように取り出しています。

ポイント

フォームの宛先をどうしたら良いのか?ここが中々わかりませんでした。結果的に、「フォームの宛先(action)は、プラグインが起動するページのURLにする」と解決しました。

1、フォームから送信

2、スーパーグローバル変数の$_POSTに入る

3、プログラムでフォーム属性を指定して受け取る

好きなように料理するw

こんな流れになります。