いつも大変お世話になっているMW WP Formには、エラーメッセージを柔軟にカスタマイズできる機能もあります。本当にありがたいです。
カスタマイズはfunctions.phpで、バリデーションルールを使用して設定します。バリテーションルールは公式サイトに記載があるのですが、一覧が(おそらく)ないので、自分用にチートシートを作成してみました。
かなり前に書きかけのまま放置していたのですが、9/1にv4がリリースされるということで、未完成のまま供養のために放出してみました(本当は表の表示などももう少し見やすくできるthemeを完成させた後に公開予定でしたので、見づらくてすみません)。v4に対応できるかはまだわかりませんのでご了承下さい。
MW WP Form バリデーションルール対応表

日本語名 | 対応する名前 | 引数 | 備考 | |
---|---|---|---|---|
1 | 必須項目 | noEmpty | チェックボックスやラジオボタンには反応しない。0はOK。 | |
2 | 必須項目 (チェックボックス) |
required | ラジオボタンの選択チェックもこれ | |
3 | 半角数字 | numeric | ||
4 | 半角英字 | alpha | ||
5 | 半角英数字 | alphaNumeric | ||
6 | カタカナ | katakana | カタカナ。いつからか「ー(長音)」を許可してくれるようになってありがたいです。 | |
7 | ひらがな | hiragana | ひらがな。「ー(長音)」は拒否。 | |
8 | ひらがな または カタカナ | kana | ||
9 | 郵便番号 | zip | 日本の郵便番号形式か否か | |
10 | 電話番号 | tel | 電話番号の形式はハイフンと+なしなら国番号付きもいけるっぽい | |
11 | メールアドレス | |||
12 | 日付 | date | OK:2018/08/01とか08/01/2018とか1st August, 2018とか2018年8月1日とか8/1とか。エラー:1月1日とか2020/20/20とか。 | |
13 | 日付(年月) | month | OK:2018年8月とか8/1とか。エラー:2018/08。バリデーションルールには説明ページはないが、それっぽい関数があったので。 | |
14 | URL | url | httpかhttpsで始める | |
15 | 一致する項目 | eq | target(文字列:他のname) | メールアドレスなどの誤入力確認用。メアドを2回入力してもらう時に使うやつ。 |
16 | 文字数の範囲 | between | min(整数値:最小文字数), max(整数値:最大文字数) | |
17 | 最小文字数 | minLength | min(整数値:最小文字数) | |
18 | 拡張子制限 | fileType | types(文字列:拡張子をカンマ区切りで) | jpg,pngなど。.はいらない。配列ではない。 |
19 | サイズ制限 | fileSize | bytes(整数値:最大ファイル数をバイト単位で) | |
20 | 最大画像サイズ | maximagesize | width(整数値:横幅をpx単位), height(整数値:縦幅をpx単位) | |
21 | 最小画像サイズ | minimagesize | width(整数値:横幅をpx単位), height(整数値:縦幅をpx単位) | |
なし | in | options(1次元配列) | optionsで渡された配列に一致する項目がない場合にエラーを返す模様。セレクト、ラジオ、チェックのチェック強化用? | |
なし | noFalse | 値がセットされていても0の場合は許さない | ||
なし | Akismet | [mwform_akismet_error]のエラーメッセージをカスタマイズできそうだが使ったことがないのでわからない。「バリテーション項目」にもバリデーションルールにも記載はない。 |
バリデーションルールでエラーメッセージをカスタマイズするには
functions.phpにエラーメッセージをカスタマイズする関数を記述し、add_filterで設定します。
functions.phpの基本書式
function 自分でつけた関数名 ( $validation ) {
$validation->set_rule(
'バリテーションを適用する項目名',
'バリデーションルール名',
array(
'message' => 'エラーメッセージをここに記載',
'他に指定する引数があればその名前' => 値,
) );
return $validation;
}
add_filter( 'mwform_validation_mw-wp-form-フォーム識別子のkey', '自分でつけた関数名' );
具体的な記載例
投稿に記載したフォーム識別子
[mwform_formkey key="333"]
フォーム内に記載したショートコード
[mwform_radio name="ラジオボタン選択肢" children="0,1,2,3"]
[mwform_password name="パスワード入力欄" size="60"]
functions.php
function my_validations ( $validation ) {
$validation->set_rule(
'ラジオボタン選択肢',
'required',
array(
'message' => '必ずどれかを選択しないとダメです',
) );
$validation->set_rule(
'ラジオボタン選択肢',
'noFalse',
array(
'message' => '0は選択していないことと同じです',//かなりうざいので選択されたくない選択肢は選択肢に用意するのはやめましょう
) );
$validation->set_rule(
'パスワード入力欄',
'noEmpty',
array(
'message' => 'パスワードは必ず設定してください',
) );
$validation->set_rule(
'パスワード入力欄',
'minLength',
array(
'min' => 32,
'message' => 'パスワードは32文字以上必要です',
) );
return $validation;
}
add_filter( 'mwform_validation_mw-wp-form-333', 'my_validations' );