联系表7验证最小长度

时间:2018-11-02 08:18:36

标签: php wordpress contact-form-7

首先,我正在使用最新的WordPress和CF7版本。我想在之前包括tel字段的最小长度验证。我知道语法minlength="" 可以在CF7内使用,但由于未知原因,它将无法工作。只有maxlength=""可以。

我已经联系了插件支持部门,但似乎没有进一步的反应。因此,我在这里搜索并找到了一些代码,并对其进行了编辑,以便如果用户输入的字符数少于10个,则该字段将返回错误。我把代码放在functions.php中

function custom_phone_validation($result,$tag){
   $type = $tag['type'];
   $name = $tag['name'];
   if($name == 'Subject'){
       $phoneNumber = isset( $_POST['phonenumber'] ) ? trim( $_POST['phonenumber'] ) : '';
       if($phoneNumber < "9"){
           $result->invalidate( $tag, "phone number is less" );
       }
   }
   return $result;
   }
   add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
   add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);

现在的结果是,即使我插入了9个以上的字符,它也始终显示“电话号码较少”。 我可以知道什么地方有问题以及如何解决吗?

2 个答案:

答案 0 :(得分:2)

根据我的测试,您必须拥有tel字段[tel* phonenumber tel-503],其中phonenumber是您要发布的邮递区的名称,代码中的第二个问题是$name=='Subject'正在验证tel,因此$name将是phonenumber。所以会像这样:

function custom_phone_validation($result,$tag){
   $type = $tag['type'];
   $name = $tag['name'];
   if($name == 'phonenumber'){
   $phoneNumber = isset( $_POST['phonenumber'] ) ? trim( $_POST['phonenumber'] ) : '';
   if(strlen($phoneNumber) < 9){
       $result->invalidate( $tag, "phone number is less" );
   }
  }
  return $result;
  }
add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);

答案 1 :(得分:1)

您的$phoneNumber是一个字符串。您需要获取字符串的长度才能与9进行比较。

您的代码将变为:

function custom_phone_validation($result,$tag){
    $type = $tag['type'];
    $name = $tag['name'];
    if($name == 'Subject'){
        $phoneNumber = isset( $_POST['phonenumber'] ) ? trim( $_POST['phonenumber'] ) : '';
        if(strlen($phoneNumber) < 9){//<=====check here
            $result->invalidate( $tag, "phone number is less" );
        }
    }
    return $result;
}
add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);