MW WP Formで作成されたフォーム内で、ラジオボタンやチェックボックスの選択によって、必須項目を切り替える方法をご紹介いたします。
例えば、「その他」というラジオボタンが選択された場合のみ、特定のテキストフィールドを必須項目に変更するといったことが可能です。
MW WP Formで選択肢によって必須項目を切り替える方法
ラジオボタンやチェックボックスの選択項目によって必須を切り替えるには、mwform_validation_mw-wp-formというフックを使って制御します。
やり方については、NxWorldさんのこちらの記事で紹介されている通りなのですが、この方法に加えて必須を切り替える対象がチェックボックスやラジオボタンだった場合の対応方法もご紹介します。
ラジオボタンの選択項目によって必須を切り替える場合
ラジオボタンの選択項目によって必須を切り替えるには、適用しているテーマのfunctions.phpに以下のようなコードを追加します。
function add_mwform_validation_rule($Validation, $data) {
if ($data['radio'] === 'テキストフィールドを必須') {
$Validation->set_rule('text_req', 'noEmpty', array('message' => '未入力です。'));
}
if ($data['radio'] === 'チェックボックス/ラジオボタンを必須') {
$Validation->set_rule('check_radio_req', 'required', array('message' => '必須項目です。'));
}
return $Validation;
}
add_filter('mwform_validation_mw-wp-form-xxx', 'add_mwform_validation_rule', 10, 2);
「mwform_validation_mw-wp-form-xxx」のxxxには、対象となるフォームのフォーム識別子(ショートコード)内にあるkey=の後ろの数字を入れてください。
上記の場合、nameが”radio”の「テキストフィールドを必須」が選択されていたら、nameが”text_req”のテキストフィールドが必須項目に切り替わります。text_reqを入力せずに送信しようとすると「未入力です。」とエラーメッセージが表示されます。
radioの「チェックボックス/ラジオボタンを必須」が選択されていた場合は、nameが”check_radio_req”のチェックボックスもしくはラジオボタンが必須項目に切り替わります。check_radio_reqを入力せずに送信しようとすると、「必須項目です。」とエラーメッセージが表示されます。
このように、必須を切り替える対象がテキストフィールドとチェックボックス/ラジオボタンの場合で、$Validation->set_ruleの記述が微妙に異なります。
チェックボックスの選択項目によって必須を切り替える場合
チェックボックスの選択項目によって必須を切り替えるには、functions.phpに以下のようなコードを追加します。
function add_mwform_validation_rule($Validation, $data) {
if (isset($data['check']['data']) && is_array($data['check']['data'])) {
if (in_array('テキストフィールドを必須', $data['check']['data'])) {
$Validation->set_rule('text_req', 'noEmpty', array('message' => '未入力です。'));
}
if (in_array('チェックボックス/ラジオボタンを必須', $data['check']['data'])) {
$Validation->set_rule('check_radio_req', 'required', array('message' => '必須項目です。'));
}
}
return $Validation;
}
add_filter('mwform_validation_mw-wp-form-xxx', 'add_mwform_validation_rule', 10, 2);
ラジオボタンと同様に、nameが”check”の「テキストフィールドを必須」が選択されていたら、nameが”text_req”のテキストフィールドが必須項目に切り替わります。
checkの「チェックボックス/ラジオボタンを必須」が選択されていた場合は、nameが”check_radio_req”のチェックボックスもしくはラジオボタンが必須項目に切り替わります。
あとがき
MW WP Formは、かゆいところに手が届くフックが用意されていて助かりますね。
選択された項目によって必須項目を切り替えたい場合は、ぜひ参考にしていただければと思います。