WordPress

MW WP Form 複数のエラーメッセージを1つにまとめる方法

WordPress

例えばフォームで名前を入力する項目があったとします。
さらにその項目が「姓」と「名」で別れている場合、バリデーションを設定すると2つエラーメッセージが出てしまいます。
そこでエラーメッセージを1つだけ表示するという実装をやっていこうと思います。

フォームタグの設置

//姓
[mwform_text name="name1" show_error="false"]

//名
[mwform_text name="name2" show_error="false"]

//エラーメッセージ
[mwform_error keys="name1,name2"]

フォームタグをMW WP Formの編集画面から設置します。
ここでは名前を「姓」と「名」に分けて、エラーメッセージは任意の場所に設置出来る[mwform_error]を使用します。
[mwform_text]にはshow_error=”false”を指定し、[mwform_error]にはバリデーションエラーを表示したい項目のname属性keys=”name1,name2″を指定してください。
この時点ではまだエラーメッセージは2つ表示されます。

エラーメッセージを1つにまとめる

以下コードをfunctions.phpに記述してください。

function add_mwform_validation_rule( $Validation, $data ) {
    $validation_message = '姓もしくは名を入力してください';
    if ( empty( $data['name1'] ) ) {
        $Validation->set_rule( 'name1', 'noempty', array( 'message' => $validation_message ) );
    } elseif ( empty( $data['name2'] ) ) {
        $Validation->set_rule( 'name2', 'noempty', array( 'message' => $validation_message ) );
    } 
    return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-xxx', 'add_mwform_validation_rule', 10, 2 );

上記コードを記述することで、2つのエラーメッセージを1つにまとめることができました。
フック名「mwform_validation_mw-wp-form-xxx」の xxx の部分はフックを適用したいフォームの作成画面に表示されているフォーム識別子の key になります([mwform_formkey key=”3811″] の場合は 3811)。

あなたにおすすめの記事