首页 > 解决方案 > Wordpress Contact Form 7 自定义验证规则未执行

问题描述

似乎无法让 add_filter() 开始工作以将自定义验证规则添加到联系表单 7 (v5.2.1)。尝试了许多声称可以在本网站和其他网站上运行的示例。但到目前为止似乎没有工作。任何人都可以对此有所了解。

试过下面的代码。

function custom_text_validation_filter($result, $tag) {  
      $type = $tag['type'];  
      $name = $tag['name'];

      if($name == 'your-subject') { 
          $value = $_POST[$name];  
          if (preg_match('/[\'^£$%&*()}{#~><>|=_+¬]/', $value)){

            // $result->invalidate( $tag, "Invalid characters." ); // this did not work

            $result['valid'] = false;
            $result['reason'][$name] = 'Invalid characters';
          } 
      } 
      return $result;  
}
add_filter('wpcf7_validate_text','custom_text_validation_filter', 999, 2); 
add_filter('wpcf7_validate_text*', 'custom_text_validation_filter', 999, 2); 

由于上面的代码不起作用,请尝试以下操作。

function custom_text_validation_filter($result, $tag) {  
          $type = $tag['type'];  
          $name = $tag['name'];

          if($name == 'your-subject') { 
              $value = $_POST[$name];  
              if (preg_match('/[\'^£$%&*()}{#~><>|=_+¬]/', $value)){

                // $result->invalidate( $tag, "Invalid characters." ); // this did not work
    
                $result['valid'] = false;
                $result['reason'][$name] = 'Invalid characters';
              } 
          } 

    //Added below lines to fire validation error no matter what. But still contact form submits successfully.

          $result['valid'] = false;
          $result['reason'][$name] = 'Invalid characters';
          return $result;  
}
add_filter('wpcf7_validate_text','custom_text_validation_filter', 999, 2); 
add_filter('wpcf7_validate_text*', 'custom_text_validation_filter', 999, 2); 

进一步尝试了 add_filter 的不同优先级。

add_filter('wpcf7_validate_text','custom_text_validation_filter', 1, 2); 
add_filter('wpcf7_validate_text','custom_text_validation_filter', 2, 2); 
add_filter('wpcf7_validate_text','custom_text_validation_filter', 10, 2); 
add_filter('wpcf7_validate_text','custom_text_validation_filter', 20, 2); 
add_filter('wpcf7_validate_text','custom_text_validation_filter', 999, 2); 

非工作

标签: phpwordpresscontact-form-7

解决方案


你的职能做得好吗?$tag在我看来,参数是一个对象。

除此之外,我看不出有什么阻塞:/

https://contactform7.com/2015/03/28/custom-validation/


推荐阅读