【MW WP Form】必須項目をラジオボタン選択肢によって変えたい

2021-10-24

MW WP Formの必須項目を分岐で変更!

お問い合わせフォームなどで、選択肢によって分岐させ、フォームの項目を変えるのは難しい。例えば、資料請求を選んだら住所入力欄が出てくるとか。
必須が多いとフォーム入力が面倒になるので、なるべくシンプルに作りたいんですよね。でもお問い合わせフォームと別に資料請求フォームを作成するのも手間です。
では分岐で必須項目だけでも変えられる? そう思って調べました。

MW WP Formの編集

まずはプラグイン「MW WP Form」をインストールしてフォームを作ります。

お問い合わせの種類
資料請求をお選びの方は必ずお答えください

郵送先のご住所

資料の種類

その他をお選びの方は詳しくご記入ください

最初の項目で「資料請求」を選んだ場合だけ、「郵送先のご住所」「資料の種類」が必須項目になります。

さらに「資料の種類」で「その他」を選んだ方だけ必須でテキストボックスに入力してもらいます。
(こちらのフォームの見本からは送信されません。)

こちらはフォームのコード例です。

<table>
<tr>
<th>お問い合わせの種類</th>
<td>[mwform_radio name="type" children="お問い合わせ,ご予約,資料請求,その他" vertically="true"]</td>
</tr>
<tr>
<th>資料請求をお選びの方は必ずお答えください</th>
<td>
<p>郵送先のご住所</p>[mwform_text name="your-address" size="60"]
<p>資料の種類</p>[mwform_radio name="document" children="商品1,商品2,商品3,その他" vertically="true"]
<p>その他をお選びの方は詳しくご記入ください</p>[mwform_textarea name="other" cols="50" rows="5"]
</td>
</tr>
</table>
<div class="contact_btn">
[mwform_submitButton name="submit" confirm_value="確認する" submit_value="送信する"][mwform_bback class="modoru" value="back"]戻る[/mwform_bback]
</div>

 

MW WP Formの編集画面では上記のバリテーションルールは設定しません。

 

function.phpに追加

続いてfunction.phpで下記バリテーションルールを設定します。

//MW WP Form バリテーション
function my_validation_rule( $Validation, $data ) {
if ( $data['type'] === '資料請求' ) {
$Validation->set_rule( 'your-address', 'noEmpty', array(
'message' => '※資料請求の方は必ずご記入ください。'
) );
$Validation->set_rule( 'document', 'required', array(
'message' => '※資料請求の方は必ず選択してください。'
) );
}
if ( $data['document'] === 'その他' ) {
$Validation->set_rule( 'other', 'noFalse', array(
'message' => '※その他を選択した方は必ずご入力ください。'
) );
}
return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-★★★', 'my_validation_rule', 10, 3 );

一番下の行「mw-wp-form-★★★」、★★★にはフォームの識別子の数字が入ります。
ラジオボタン「name="type"」で選択したものが「資料請求」だったら「name="your-address"」(テキスト)、「name="document"」(ラジオボタン)を必須項目にします。

また、「name="document"」(ラジオボタン)で「その他」を選択した場合、「name="other"」(テキストエリア)を必須項目にします。

また今回もこちらのページにお世話になりました。
本当に助かりました!ありがとうございます!