サポート » プラグイン » MW WP Formの確認画面でemail参照

  • 解決済 mimix

    (@mimix)



    MW WP Formの確認画面で、フォームで入力したemailを取得したいと思っています。

    name=”email”としていますので、確認画面で$_POST[‘email’]としたのですが、
    空で取得できませんでした。

    実行したいことは、
    ————————
    問い合わせの保存されたデータベースを参照し、
    同じemailがあるかどうかをチェックして、ある場合は問い合わせできない。
    ————————

    ということを行おうと思っています。
    データベース参照の部分はできているのですが、
    確認画面で入力したemailを取得できなくて困っています。

    プラグイン本体に手を加えずに、実現できる方法を
    どなたかご存じないでしょうか。

    MW WP Form バージョン 4.0.4
    WordPress 4.9.8

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

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    確認画面でフォームで入力した email を取得する方法は、ちょっと分かりませんが、mwform_validation_rules フィルターフックでバリデーションルールを追加できるので、これを利用するのはどうでしょうか?
    https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_validation_rules/

    • この返信は1 ヶ月前に  ishitaka さんが編集しました。
    ishitaka

    (@ishitaka)

    サンプルコードを書いてみました。

    if ( class_exists( "MW_WP_Form_Abstract_Validation_Rule" ) ) {
    	class MW_WP_Form_Validation_Rule_Custom_Mail extends MW_WP_Form_Abstract_Validation_Rule {
    		protected $name = 'custommail';
    
    		public function rule( $key, array $options = array() ) {
    			$value = $this->Data->get( $key );
    			if ( ここでメールアドレスをチェックする ) {
    				$defaults = array(
    					'message' => 'このメールアドレスは使用できません。'
    				);
    				$options = array_merge( $defaults, $options );
    				return $options['message'];
    			}
    		}
    
    		public function admin( $key, $value ) {
    			?>
    			<label><input type="checkbox" <?php checked( $value[ $this->getName() ], 1 ); ?> name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>]" value="1" />カスタムメールアドレス</label>
    			<?php
    		}
    	}
    
    	function mwform_validation_rule_custom_mail( $validation_rules ) {
    		$instance = new MW_WP_Form_Validation_Rule_Custom_Mail();
    		$validation_rules[$instance->getName()] = $instance;
    		return $validation_rules;
    	}
    	add_filter( 'mwform_validation_rules', 'mwform_validation_rule_custom_mail' );
    }
    mimix

    (@mimix)

    ishitaka様

    このような使い方があったんですね。
    とても参考になりました。

    同一メールであった場合は、特定のページへリダイレクトさせるように調整して、
    予定していた動作を完璧に行うことが出来ました。

    ありがとうございます。

    
    if ( class_exists( "MW_WP_Form_Abstract_Validation_Rule" ) ) {
    	class MW_WP_Form_Validation_Rule_Custom_Mail extends MW_WP_Form_Abstract_Validation_Rule {
    		protected $name = 'custommail';
    
    		public function rule( $key, array $options = array() ) {
    			$value = $this->Data->get( $key );
    			if ( $key == 'email' ) {
    				global $wpdb;
    				$user_count = 0;
    				$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_key='email' && meta_value='".$value."'" );
    				if ( $user_count > 0 ) {
    					header('Location: ' .home_url( 'justonce/' ) .$accessdir);
    					exit();
    				}
    			}
    		}
    
    		public function admin( $key, $value ) {
    			?>
    			<label><input type="checkbox" <?php checked( $value[ $this->getName() ], 1 ); ?> name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>]" value="1" />カスタムメールアドレス</label>
    			<?php
    		}
    	}
    
    	function mwform_validation_rule_custom_mail( $validation_rules ) {
    		$instance = new MW_WP_Form_Validation_Rule_Custom_Mail();
    		$validation_rules[$instance->getName()] = $instance;
    		return $validation_rules;
    	}
    	add_filter( 'mwform_validation_rules', 'mwform_validation_rule_custom_mail' );
    }
    
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。