サポート » プラグイン » MW WP Formでの条件分岐

  • 解決済 river

    (@jpairb)


    PHP初心者です。
    MW WP Formを使わせていただいています。
    とても使いやすく、確認画面付きはありがたく大変助かっています。

    お問合せフォームについての質問です。
    メール入力(確認用再入力欄付)で、基本は必須項目にして、チェックボックス、例えば「メールアドレスがない」にチェックを入れると必須ルールが解除されるようなカスタマイズはできませんでしょうか。

    お客様の中にメルアドがない方がいるので、完全に必須にはできないのですが、有る方の入力忘れをふせぐために、このようにできたらいいなと考えています。

    • このトピックはriverが6年前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    mwform_validation_rules フィルターフックでバリデーションルールを追加できるので、これを利用するのもいいかと思います。
    https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_validation_rules/

    下記は、必須または選択したチェックボックス項目を検証するバリデーションルールを追加するサンプルコードです。

    functions.php 等に、

    if ( ! class_exists( "MW_WP_Form_Validation_Rule_RequiredCheckbox" ) ) {
    	class MW_WP_Form_Validation_Rule_RequiredCheckbox extends MW_WP_Form_Abstract_Validation_Rule {
    		protected $name = 'requiredcheckbox';
    
    		public function rule( $key, array $options = array() ) {
    			$value = $this->Data->get( $key );
    			if ( !is_null( $value ) ) {
    				$target = $this->Data->get( $options['target'] );
    				if ( empty( $value ) && MWF_Functions::is_empty( $target ) ) {
    					$defaults = array(
    						'target' => null,
    						'message' => sprintf( '未入力です。入力しない場合は「%s」を選択してください。', $options['target'] )
    					);
    					$options = array_merge( $defaults, $options );
    					return $options['message'];
    				}
    			}
    		}
    
    		public function admin( $key, $value ) {
    			$target = '';
    			if ( is_array( $value[$this->getName()] ) && isset( $value[$this->getName()]['target'] ) ) {
    				$target = $value[$this->getName()]['target'];
    			}
    			?>
    			<table>
    				<tr>
    					<td>必須または選択したチェックボックス項目</td>
    					<td><input type="text" value="<?php echo esc_attr( $target ); ?>" name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][target]" /></td>
    				</tr>
    			</table>
    			<?php
    		}
    	}
    }
    
    function mwform_validation_rule_requiredcheckbox( $validation_rules ) {
    	$instance = new MW_WP_Form_Validation_Rule_RequiredCheckbox();
    	$validation_rules[$instance->getName()] = $instance;
    	return $validation_rules;
    }
    
    add_filter( 'mwform_validation_rules', 'mwform_validation_rule_requiredcheckbox' );
    トピック投稿者 river

    (@jpairb)

    ご返信ありがとうございました。

    サンプルコードをfunctions.phpに記載すると、希望通りのチェック項目ができました!
    助かりました。ほんとうにありがとうございました。

    • この返信は6年前にriverが編集しました。
    • この返信は6年前にriverが編集しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「MW WP Formでの条件分岐」には新たに返信することはできません。