WPの独自プラグインを作ってみる4
2025.01.24 09:00
2025.01.14 13:51

前回はDBの準備とモード操作を作成しました。
今回はDBでのデータの読み込み・書き込みを行います。
まずは書き込み用の関数を作成します。
function hoge_save_db()
{
// DB操作用のWPの変数を取得
global $wpdb;
// テーブル名を指定
$table_name = $wpdb->prefix . "hoge";
// 保存データ作成
$datas = array(
'status_id' => 2,
'spot_id' => 2
);
// DB追加処理
$wpdb->insert($table_name, $datas);
}
そして、前回作ったhoge_plugin_1にこの関数を実行するコードを追加します。
function hoge_plugin_1() {
// POSTされたら行う処理
if (!empty($_POST['mode'])) {
// POST時のhidden変数が「hoge_save」なら
if($_POST['mode'] === 'save') {
// DB保存処理
hoge_save_db();
// 保存完了メッセージを表示する
echo '<div class="updated"><p>保存しました</p></div>';
}
}
// 入力画面を表示する
echo 'テストプラグイン_ページ1を表示する関数';
echo '<form method="post" action="' . str_replace( '%7E', '~', $_SERVER['REQUEST_URI']) . '">' . "\n";
echo ' <input type="hidden" name="mode" value="save">' . "\n";
echo ' <input type="submit" name="submit" class="submit_btn" value="設定を保存する">' . "\n";
echo '</form>' . "\n";
}
これで保存ボタンを押せばどんどんデータが追加されていきます。
今回は「insert」を使いましたが、他には編集の「update」、削除の「delete」がありますので、適宜使い分けます。
たとえばデータ読み込みならこんな感じ。
function hoge_get_db()
{
// DB操作用のWPの変数を取得
global $wpdb;
// テーブル名を指定
$table_name = $wpdb->prefix . "hoge";
// 読み込みSQLクエリ組み立て
$sql = "SELECT * FROM $table_name ;";
// DB取得処理
return $wpdb->get_results( $sql, ARRAY_A );
}
これはあくまでクエリ内に変数がない場合。
変数がある場合はSQLインジェクションを回避するためにprepareを使います。
たとえばIDを指定して1件だけ取得する場合などで、こんな感じです。
function hoge_get_db()
{
// DB操作用のWPの変数を取得
global $wpdb;
// テーブル名を指定
$table_name = $wpdb->prefix . "hoge";
// 読み込みSQLクエリ組み立て
$sql = "SELECT * FROM $table_name WHERE spot_id = %s;";
// エスケープ処理
$query = $wpdb->prepare($sql, 2);
// DB取得処理
return $wpdb->get_results( $query, ARRAY_A );
}
spot_idに入る変数を%sとし、prepareで%sを2と指定しています。
この回りくどいことをすることでエスケープがかかり、
SQLインジェクションを防ぐことができます。
削除の場合はこんな感じ。
function hoge_delete_db($id)
{
// DB操作用のWPの変数を取得
global $wpdb;
// テーブル名を指定
$table_name = $wpdb->prefix . "hoge";
// データを削除
$wpdb->delete(
$table_name,
array('ID' => $id),
array('%d')
);
}
deleteメソッドでprepareまでやっていますね。
これで取得・追加・削除までできましたので、
一通りのDB操作ができたことになります。
今回は以上です!