サポート » プラグイン » ContactForm7 チェックボックスの複数選択を必須に

  • 解決済 passerbya

    (@passerbya)


    お世話になっております。
    よくわかっていないので的外れだったり
    程度の低い質問であった場合はご容赦ください。

    現状
     WordPress 4.1.22
     ContactForm7 4.1.1

    内容
     Contact Form 7 で設置したチェックボックスで複数選択を必須にする方法をお教えください。
     例:選択肢5点用意し、2点以上のチェックがないと送信できないように

    いろいろな方法があると思うのですが
    できればサーバサイドで処理したいと考えています。
    (フィルターフック?)

    よろしくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    wpcf7_validate フィルターフックで入力値を検証できます。下記ページが参考になると思います。
    https://qiita.com/kd9951/items/1717fc384c16e00d6458

    例)functions.php 等に、

    function wpcf7_validate_customize( $result, $tags ) {
    
    	$form = WPCF7_Submission::get_instance();
    	$posted_datas = $form->get_posted_data();
    
    	$names = array( 'checkbox1', 'checkbox2', 'checkbox3', 'checkbox4', 'checkbox5' );
    	$counter = 0;
    	foreach ( $names as $name ) {
    		if ( ! empty( $posted_datas[$name][0] ) ) $counter++;
    	}
    	if ( $counter < 2 ) {
    		$result->invalidate( 'checkbox5', '2 個以上選択してください。' );
    	}
    
    	return $result;
    }
    
    add_filter( 'wpcf7_validate', 'wpcf7_validate_customize', 11, 2 );
    トピック投稿者 passerbya

    (@passerbya)

    ishitaka 様
    ありがとうございます!

    お教えいただいた記述ですが
    チェックボックスが5種類存在し、その5種類のうち2種類にチェックが入るというモノですよね?

     お教えいただいた記述で
      ひらがな : □ あいう  □ かきく  □ さしす
      カタカナ : □ アイウ  □ カキク  □ サシス
      英字   : □ ABC    □ DEF   □ GHI
      数字   : □ 123    □ 456   □ 789
      記号   : □ ***    □ $$$   □ ###
     の場合
      ひらがな : ■ あいう  □ かきく  □ さしす
      カタカナ : □ アイウ  □ カキク  ■ サシス
      英字   : □ ABC    □ DEF   □ GHI
      数字   : □ 123    □ 456   □ 789
      記号   : □ ***    □ $$$   □ ###
     で OK! ということですよね?

    私の説明不足で申し訳ありませんが
    下記のような場合を想定していました。

     例2
      ひらがな : □ あいう  □ かきく  □ さしす  □ たちつ  □ なにぬ
     の場合で
      ひらがな : ■ あいう  ■ かきく  □ さしす  □ たちつ  □ なにぬ
     のように考えています。
     (1種類でチェックが2つ以上必須)

    通常、コンタクトフォームで「タグの作成」を行なうと
    名前は「checkbox-***」、選択肢のname属性は全て同じ「checkbox-***[]」となってしまいます。
    (***は数字)

    お手数をおかけして申し訳ありませんでした。

    get_posted_data() で全ての項目の入力値を取得できるので、それぞれでチェックしてください。
    また、参照ページのサンプルコードが参考になると思います。

    • この返信は6年、 2ヶ月前にishitakaが編集しました。
    トピック投稿者 passerbya

    (@passerbya)

    ありがとうございます。
    やってみます。

    こんな感じでしょうか。

    function wpcf7_validate_customize( $result, $tags ) {
    
    	$form = WPCF7_Submission::get_instance();
    	$posted_datas = $form->get_posted_data();
    
    	// ひらがな
    	if ( count( $posted_datas['checkbox-1'] ) < 2 ) {
    		$result->invalidate( 'checkbox-1', '2つ以上選択してください。' );
    	}
    
    	// カタカナ
    	if ( count( $posted_datas['checkbox-2'] ) < 2 ) {
    		$result->invalidate( 'checkbox-2', '2つ以上選択してください。' );
    	}
    
    	(省略)
    
    	return $result;
    }
    
    add_filter( 'wpcf7_validate', 'wpcf7_validate_customize', 11, 2 );
    トピック投稿者 passerbya

    (@passerbya)

    無事、2点以上のチェック必須で動作させることができました。
    本当にありがとうございました!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「ContactForm7 チェックボックスの複数選択を必須に」には新たに返信することはできません。