WordPress:「MW WP Form」でラジオボタンやチェックボックスの選択項目によって別項目を必須に切り替える方法

WordPress:「MW WP Form」でラジオボタンやチェックボックスの選択項目によって別項目を必須に切り替える方法

WordPressで確認・完了画面付きの問い合わせフォームを実装したいときに便利なプラグイン「MW WP Form」で、ラジオボタンやチェックボックスの選択された項目に応じて、他項目のバリデーション設定を必須に切り替える方法です。

ラジオボタン使用時の実装イメージ

簡単になりますがイメージとしては上のようなラジオボタン(またはチェックボックス)の項目があったとき、一番右の「その他」項目下にある入力フィールドは「その他」を選択した場合のみ必須項目にするという想定のもので、そのバリデーションの動きをmwform_validation_mw-wp-form-xxxのフックを使って追加していきます。

実装にはそれぞれfunctions.phpへ下記のように記述し、フック名にあるxxxの部分は自身が作成したフォームのkeyに併せて変更してください。
記述後に動きを確認すると、いずれも「その他」を選択したのに入力フィールドが未入力だった場合はエラーを示す文言が表示されるのを確認できます。

ラジオボタンの場合

ラジオボタンのnameexample_radio、「その他」項目を選択した場合の入力フィールドのnameexample_radio_otherを指定したものになります。

functions.php

add_filter( 'mwform_validation_mw-wp-form-xxx', 'add_mwform_validation_rule', 10, 2 );
function add_mwform_validation_rule( $Validation, $data ) {
  if ( $data['example_radio'] === 'その他' ) {
    $Validation->set_rule( 'example_radio_other', 'noEmpty', array( 'message' => '「その他」を選択した場合はご入力ください。' ) );
  }
  return $Validation;
}

チェックボックスの場合

チェックボックスのnameexample_check、「その他」項目を選択した場合の入力フィールドのnameexample_check_otherを指定したものになります。

functions.php

add_filter( 'mwform_validation_mw-wp-form-xxx', 'add_mwform_validation_rule', 10, 2 );
function add_mwform_validation_rule( $Validation, $data ) {
  if ( isset( $data['example_check']['data'] ) && is_array( $data['example_check']['data'] ) ) {
    if ( in_array( 'その他', $data['example_check']['data'] ) ) {
      $Validation->set_rule( 'example_check_other', 'noEmpty', array( 'message' => '「その他」を選択した場合はご入力ください。' ) );
    }
  }
  return $Validation;
}

Close the search window,
please press close button or esc key.