MW WP Formの条件分岐

PHPワードプレス関数ファイルMW WP Formプラグイン

MW WP Formの電話番号チェックを少しカスタマイズするお話。

電話番号のパターン

電話番号のパターンは、以下。

  • 固定電話:03 0000 0000、045 000 0000(10桁)
  • フリーダイヤル:0120 000 000(10桁)
  • 携帯:070 0000 0000、080 0000 0000、090 0000 0000(11桁)
  • IP:050 0000 0000(11桁)

バリデーションルール「電話番号」

フォームタグ「mwform_tel 」にバリデーションルール「電話番号」をかけた場合、

例えば「030 0000 0000」「080 000 0000」「0800 00 0000」「08000 0 0000」はエラーを出さないんですね。

実際に電話をかける際は、数字さえ合っていれば区切りはどうでも良いのですが、

上記の例はあり得ない番号です。

正規表現?

  • 先頭が050、070、080、090
  • そのほか

を正規表現で書き、条件分岐にしてバリデーションを適用させればフォーム「mwform_tel 」で厳密な番号チェックが出来ると思いますが、ちょっと難しい。

トライすればよい勉強にはなると思いますが、、、

入力による条件分岐 + mwform_text

お客様からは、「固定、携帯別欄でもいいよ」と妥協して頂いていたので、

  • 固定、携帯/IPどちらか必須
  • 固定電話なら10桁
  • 携帯、IPなら11桁

という線で書いてみました。

function phone_validation_rule( $Validation, $data, $Data ) {
	if( $data['your-phone1'] ){
	}else{
		$Validation->set_rule( 'your-phone2', 'noEmpty', array(
			'message' => 'どちらかを入力してください。'
		) );
	}
	if( $data['your-phone2'] ){
	}else{
		$Validation->set_rule( 'your-phone1', 'noEmpty', array(
			'message' => 'どちらかを入力してください。'
		) );
	}
	return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-xxx', 'phone_validation_rule', 10, 3 );
  • phone_validation_rule = 任意の関数名
  • your-phone1 = 固定電話
  • your-phone2 = 携帯/IP
  • エラーメッセージ = どちらかを入力してください。

※「mw-wp-form-xxx」のxxxはフォームの識別子

 

フォーム編集画面のバリデーションルールで、

  • your-phone1:文字数の範囲10~10、半角数字
  • your-phone2:文字数の範囲11~11、半角数字

 

これで希望する動作となりました。

あと、それぞれのフォームにはplaceholiderに入力例、「全角を半角に自動変換」を適用しておいた方が入力が分かりやすいですね。

 

MW WP Formの条件分岐についての一番ベーシックな使用例と思います。

全てのフォームに適用

上記は特定のフォームをカスタマイズする例ですが、フォームがたくさんあってすべてのフォームに適用したい場合はバリデーションルールの追加ウィンドウそのものを改変することが必要です。

結構複雑になるので、まんまコピペでOKな記事を。

MW WP Form のカスタムバリデーションルール