こんにちは、grandstreamです。
今回は、WordPressの$wpdbオブジェクト変数を使って、MySQL上のデータベースに値を挿入する手順 をシンプルに解説します。
コードはコピペして使っちゃってください。
やりたいこと
今回は、WordPress上でtodoリストシステムを作ると仮定します。
イメージは次のような感じ。
- ワードプレスの固定ページでpage-todo.phpを作成。
- page-todo.php内で、todoの入力フォームを作る。
- 入力したデータをPOSTで別の処理用のphpファイルに飛ばす。
- 処理用phpファイル内で、$wpdbを使って、MySQLデータベースに値を追加。
MySQL上のtodoリストのテーブルは次のような感じです。(データ挿入後の画像)
なお、このテーブル自体は、phpMyAdmin上で作成しました。
$wpdbでMySQLにデータをinsertする手順
ではさっそく、$wpdbでMySQLにデータを挿入する手順を見ていきたいと思います。
なお今回は、/wp-content/themes/テーマ名/process.php
という感じで、テーマ直下(index.phpとかがある階層)に「process.php」というデータ処理専用のファイルを作ってデータのやり取りをやっていきたいと思います。
1.wp_load.phpをインクルードする
さて、process.phpでいきなり$wpdbというWordPress関数を使おうとしても使えないので、あらかじめ「wp_load.php」というファイルを読み込んでおかないといけません。
したがって、process.phpの先頭部分に、以下の記述を書いておきましょう。
ちなみに、「dirname(__FILE__)」ってなんだ?と思った方のために補足です。
これはファイルの階層を取得するのに使える記述で、例えば「process.php」内で「require_once( dirname(__FILE__). ‘/hoge.php’);」と記述すると、「process.php」と同じ階層にある「hoge.php」というファイルを取得できます。
今回、「wp_load.php」(wp-contentと同階層にある)は「process.php」からみて3階層上に上がらないと行けないので、dirnameを更に3回重ねて使用しているわけです。
詳しくは以下のサイトが参考になります。
2.$wpdbでMySQLにデータをinsertする
あとは、以下のような記述で、MySQL上のテーブルに追加したい項目のデータを挿入するだけです。
では、もう少し詳しくコードを見ていきます。
global $wpdbを宣言する
最初に、これから$wpdbを使いますよーと宣言します。
テーブルを指定
次に、データを挿入したいテーブルを変数に入れておきます。”todo”の部分には、テーブル名を記述してください。
$wpdbを使用してデータを挿入
insertの第1引数には先程指定した$tablenameを設定します。
第2引数のarrayには、‘カラム名’ => ‘挿入したい値’として、データを設定します。
第3引数のarrayは、第2引数のarrayに1対1で対応していて、「%s:文字列、%d:整数、%f:浮動小数点数」のいずれかを指定します。
例えば、下記の例でいうと第2引数のarray内の1番目の「’supporter_id’」には整数が入るので、第3引数のarray内の1番目に「’%d’」と指定しているわけです。以下も同様です。
なお、挿入するデータには変数($val)を設定していますが、最初は手入力で数値や文字列を入れてみて、ホントにテーブルにデータが入るか試してみるといいですね。
まとめ
というわけで今回は、$wpdbでデータを挿入(insert)する方法を簡単にまとめてみました。
お役に立てれば幸いです。
ではまた…!
コメント