首先,我正在使用最新的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个以上的字符,它也始终显示“电话号码较少”。 我可以知道什么地方有问题以及如何解决吗?
答案 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);