作成中のプログラムに、削除機能をつけてみます。
まずは、function sample_plugin()に対して、削除確認画面と、
削除実行画面のメソッドをつけます。
/**
* 管理画面のHTMLの生成と表示
*/
function sample_plugin()
{
if (isset($_REQUEST["submit"]["detail"])) {
//詳細
self::detail();
} else if (isset($_REQUEST["submit"]["edit"])) {
//修正
self::edit();
} else if (isset($_REQUEST["submit"]["edit_check"])) {
//修正確認
self::edit_check();
} else if (isset($_REQUEST["submit"]["edit_exec"])) {
//修正実行
self::edit_exec();
} else if (isset($_REQUEST["submit"]["delete_check"])) {
//削除確認
self::delete_check();
} else if (isset($_REQUEST["submit"]["delete_exec"])) {
//削除実行
self::delete_exec();
} else {
//初期表示
self::disp();
}
}
次に関数delete_checkとdelete_execをそれぞれ新規作成します。
削除確認画面は以下のように書きます。
これは修正確認画面の応用なので、書き方によっては同一にできるかと思います。
/**
* 削除確認
*/
function delete_check()
{
$form_id = $_REQUEST["form_id"];
global $wpdb;
$tbl_name = $wpdb->prefix . 'sample_mst';
$sql = "SELECT * FROM {$tbl_name} WHERE id = %d;";
$prepared = $wpdb->prepare($sql, $form_id);
$rows = $wpdb->get_results($prepared, ARRAY_A);
//データ一覧
echo <<< EOL
<form action="" method="post">
<h2>データ削除確認</h2>
<table border="1">
<tr>
<td>ID</td>
<td>{$form_id}</td>
</tr>
<tr>
<td>NAME</td>
<td>{$rows[0]["sample_name"]}</td>
</tr>
<tr>
<td>登録日時</td>
<td>{$rows[0]["create_date"]}</td>
</tr>
</table>
<input type="hidden" name="form_id" value="{$form_id}">
<input type='submit' name='submit[delete_exec]' class='button-primary' value='削除する' />
<input type='submit' name='submit[edit]' class='button-primary' value='戻る' />
EOL;
echo "</form>";
}
次に削除実行の関数を追加します。
/**
* 削除実行
*/
function delete_exec()
{
$form_id = $_REQUEST["form_id"];
//データを削除
global $wpdb;
$tbl_name = $wpdb->prefix . 'sample_mst';
$sql = "DELETE FROM {$tbl_name} WHERE id = %s;";
$dlt = $wpdb->query($wpdb->prepare($sql, $form_id));
//データ一覧
echo <<< EOL
<form action="" method="post">
<h2>データ編集認</h2>
EOL;
echo "<div class='updated fade'><p><strong>";
echo _e('削除が完了しました');
echo "</strong></p></div>";
echo <<<EOL
<input type='submit' name='submit[]' class='button-primary' value='戻る' />
EOL;
echo "</form>";
}
上記の機能を書くことで、データ一覧画面から詳細画面→削除確認画面→削除実行の流れができています。
書き方は千差万別でもっと効率のよい書き方もあると思います。
そこは今度プラグインの調整を続けていく際に強化していきます。