動画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
こんな流れになります。