これまでの開発ではデータ登録時のエラー処理は、古典的(?)な書き方で入力チェック→エラー内容表示を行っていました。
wordpressには元々エラー処理用のクラスがあるので、それに置き換えてみようと思います。
まずは、入力画面から登録ボタンを押した際の、確認画面の処理を見直します。
[php]
//エラー処理を入れる為のオブジェクト生成
$error = new WP_Error();
//入力値チェック(複数のエラーチェックをここで行う)
if (!strlen($_POST["sample_name"])) {
$error->add("error", "名前を入力してください");
}
if (!strlen($_POST["sample_text"])) {
$error->add("error", "テキストを入力してください");
}
//エラーコードがある場合は、登録画面を再表示する
if ($error->get_error_code()) {
//ここで改めて登録フォームを表示する
}
[/php]
まず、「$error = new WP_Error();」とすることで、エラー処理用のクラスを呼び、オブジェクトを生成しておきます。
次に、入力値チェックを行います。
入力値のチェック方法は色々あると思いますが、ここでは「strlen」を使って単純に文字列(の長さ)があるか無いかで判定しています。
(チェック用の関数の使い方は、別方法がありますが、ここでは割愛いたします)
最後に、「$error->get_error_code()」でエラーだった場合のコードを取得し、エラー表示を行うか、どうかの判定をします。
エラーだった場合は、改めて登録フォームを表示します。
次に、エラー時の登録フォーム側のプログラムを調整します。
[php]
//エラー処理
if ($error->get_error_codes()) {
echo "<div class=’error’>";
echo "<ul>";
foreach ($error->get_error_messages() as $value) {
echo "<li>" . esc_html($value) . "</li>";
}
echo "</ul>";
echo "</div>";
}
[/php]
$errorオブジェクトを渡し、エラーコードの有無を判定します。
エラーだった場合、エラー内容をエラーの個数分表示しています。
具体的な画面は次のようになります。
入力フォームの初期画面
エラーだった場合の再表示画面
エラーメッセージの表示時のクラス名
[php]
<div class=’error’>
[/php]
はwordpressに標準搭載されているcssのクラス名なので、画面のエラー文言の表現が統一されて便利です。
また、
[php]
<div class=’updated’>
[/php]というクラス名もあり、その場合は正常に更新されたケースで使用するとよいです。