フォーラムへの返信

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • フォーラム: プラグイン
    返信が含まれるトピック: MW WP FORMでのフリーメール除外
    トピック投稿者 yossymorisaki

    (@yossymorisaki)

    下記で解決しました!munyaguさんありがとうございました!

    if ( class_exists( 'MW_WP_Form_Abstract_Validation_Rule' ) ) {
      class MW_WP_Form_Validation_Rule_Freemail extends MW_WP_Form_Abstract_Validation_Rule {
        protected $name = 'freemail';
    
        public function rule( $key, array $options = array() ) {
          $value = $this->Data->get( $key );
    
          $freemails = array(
                    'gmail.com',
                    'yahoo.co.jp',
                    'msn.com',
                    'hotmail.co.jp',
                    'hotmail.com',
            );
    
            
    
            if(!empty($value)){
        foreach($freemails as $freemail){
          if(preg_match("/@" . preg_quote($freemail) . "$/ui",$value)){
             $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_freemail( $validation_rules ) {
        $instance = new MW_WP_Form_Validation_Rule_Freemail();
        $validation_rules[$instance->getName()] = $instance;
        return $validation_rules;
      }
    
      add_filter( 'mwform_validation_rules', 'mwform_validation_rule_freemail' );
    }
    
    フォーラム: プラグイン
    返信が含まれるトピック: MW WP FORMでのフリーメール除外
    トピック投稿者 yossymorisaki

    (@yossymorisaki)

    munyaguさん

    アドバイスありがとうございます!
    その後色々調べまして、MW WP FORMにオリジナルのバリデーションを追加するには以下のような形で組み込むのが良いとわかりました。munyaguさんに教えていただいたように組み込んでみました。検証してみます。ありがとうございます。

    if ( class_exists( 'MW_WP_Form_Abstract_Validation_Rule' ) ) {
      class MW_WP_Form_Validation_Rule_Freemail extends MW_WP_Form_Abstract_Validation_Rule {
        protected $name = 'freemail';
    
        public function rule( $key, array $options = array() ) {
          $value = $this->Data->get( $key );
    
          $freemails = array(
                    'gmail.com',
                    'yahoo.co.jp',
                    'msn.com',
                    'hotmail.co.jp',
                    'hotmail.com',
            );
    
           if ( ! empty( $value )
                 && 1 === preg_match( '/^.+?@(.*)$/', $value, $maatches ) ) {
                    if ( in_array( $maatches[1], $freemails ) ) {
                            return;
     
                    }
    
            } 
    
          $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_freemail( $validation_rules ) {
        $instance = new MW_WP_Form_Validation_Rule_Freemail();
        $validation_rules[$instance->getName()] = $instance;
        return $validation_rules;
      }
    
      add_filter( 'mwform_validation_rules', 'mwform_validation_rule_freemail' );
    }
    
2件の返信を表示中 - 1 - 2件目 (全2件中)