联系表7电话号码验证

问题描述 投票:0回答:9
php wordpress forms contact-form-7
9个回答
19
投票

尝试一下这个,它肯定会按照 联系表 7 文档工作。

[number* your-telephone minlength:10 maxlength:140 placeholder "Telephone number"] 

16
投票

您可以使用 [tel* tel-672] 字段并根据您的要求通过 wpcf7_is_tel 过滤钩进行验证。

Contact form 7有许多预定义的钩子,通过它们您可以验证任何字段。这里,在Contact Form 7formatting.php模块中,验证规则是通过以下方法定义的。您可以通过apply_filters中提到的过滤器钩子覆盖它通过functions.php

function wpcf7_is_tel( $tel ) {
    $result = preg_match( '/^[+]?[0-9() -]*$/', $tel );
    return apply_filters( 'wpcf7_is_tel', $result, $tel );
}

请在您激活的主题文件夹中的functions.php中添加下面提到的代码,并将您的验证规则添加到$result

// define the wpcf7_is_tel callback 
function custom_filter_wpcf7_is_tel( $result, $tel ) { 
  $result = preg_match( '/^\(?\+?([0-9]{1,4})?\)?[-\. ]?(\d{10})$/', $tel );
  return $result; 
}

add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );

你可以看到更多


5
投票

就我而言,以下代码有效。 重要的一点是输入类型应为“tel”,如下所示。

[tel your-telephone minlength:1 maxlength:10]

2
投票

这适用于电话类型字段。如果您想使用数字或文本字段,则需要更改过滤器参数中的“wpcf7_validate_tel”以及代码。

function custom_phone_validation($result,$tag){

    $type = $tag->type;
    $name = $tag->name;

    if($type == 'tel' || $type == 'tel*'){

        $phoneNumber = isset( $_POST[$name] ) ? trim( $_POST[$name] ) : '';

        $phoneNumber = preg_replace('/[() .+-]/', '', $phoneNumber);
            if (strlen((string)$phoneNumber) != 10) {
                $result->invalidate( $tag, 'Please enter a valid phone number.' );
            }
    }
    return $result;
}
add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);

1
投票

    函数custom_phone_validation($结果,$标签){
        $type = $tag['type'];
        $name = $tag['name'];
        if($name == '电话号码'){
                    $phoneNumber = isset( $_POST['phonenumber'] ) ?修剪( $_POST['电话号码'] ) : '';
            $the_value = preg_match("/your_reg_exp 电话号码格式/",$_POST[$name]);
            if($phoneNumber == "" || $the_value == false ){ 
                $result->invalidate( $tag, "请输入有效的电话号码" );
            }
        }
        返回$结果;
    }
    add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
    add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);

电话号码 -> 字段名称

对 function.php 文件尝试这个。

过滤器:https://plugins.trac.wordpress.org/browser/contact-form-7/trunk/modules/text.php

wpcf7_validate_tel
正在使用该功能
wpcf7_validate_tel( $result, $tag )


1
投票

试试这个:

[tel your-phone minlength:10 maxlength:140]

祝你好运!!

楚查!


0
投票

我想我有很好的解决方法...

默认情况下,数字字段没有 minlength 和 maxlength 验证器。 您可以从 wp-content/plugins/contact-form-7/modules/text.php 复制它们

$atts['maxlength'] = $tag->get_maxlength_option();
$atts['minlength'] = $tag->get_minlength_option();

(在 wpcf7_text_form_tag_handler 函数中)...和验证过滤器

$code_units = wpcf7_count_code_units( stripslashes( $value ) );

if ( $maxlength && $maxlength < $code_units ) {
    $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) );
} elseif ( $minlength && $code_units < $minlength ) {
    $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) );
}

(在 wpcf7_text_validation_filter 函数中)

现在将其粘贴到numbers.php中的正确位置。 所以在 wpcf7_number_form_tag_handler 函数中 atts 看起来像:

$atts['class'] = $tag->get_class_option( $class );
$atts['id'] = $tag->get_id_option();
$atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true );
$atts['min'] = $tag->get_option( 'min', 'signed_int', true );
$atts['max'] = $tag->get_option( 'max', 'signed_int', true );
$atts['step'] = $tag->get_option( 'step', 'int', true );
$atts['maxlength'] = $tag->get_maxlength_option();
$atts['minlength'] = $tag->get_minlength_option();

wpcf7_number_validation_filter 函数以:

结尾
if ( $tag->is_required() && '' == $value ) {
        $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) );
    } elseif ( '' != $value && ! wpcf7_is_number( $value ) ) {
        $result->invalidate( $tag, wpcf7_get_message( 'invalid_number' ) );
    } elseif ( '' != $value && '' != $min && (float) $value < (float) $min ) {
        $result->invalidate( $tag, wpcf7_get_message( 'number_too_small' ) );
    } elseif ( '' != $value && '' != $max && (float) $max < (float) $value ) {
        $result->invalidate( $tag, wpcf7_get_message( 'number_too_large' ) );
    } elseif ( $maxlength && $maxlength < $code_units ) {
        $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) );
    } elseif ( $minlength && $code_units < $minlength ) {
        $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) );
    }

    return $result;

0
投票

根据其他解决方案,优选最小长度为 10,以确保访问者在提交的内容中包含区号。我还允许使用 15 个字符,以防访问者包含国家/地区代码和破折号“+1 555-555-5555”

[tel* your-phone minlength:10 maxlength:15]

0
投票
function custom_phone_validation($result,$tag){

    $type = $tag->type;
    $name = $tag->name;

    if($type == 'tel' || $type == 'tel*'){

        $phoneNumber = isset( $_POST[$name] ) ? trim( $_POST[$name] ) : '';

        //$phoneNumber = preg_replace('/[() .+-]/', '', $phoneNumber);
            if (preg_match("/^(\+?61-?)/", $phoneNumber)) {
                //$result->invalidate( $tag, 'Please enter a valid phone number.' );
            }
            else if(preg_match("/^(\+?04-?)/", $phoneNumber))
            {
                
            }
            else
            {
                $result->invalidate( $tag, 'Please enter a valid phone number.' );
            }
    }
    return $result;
}
add_filter('wpcf7_validate_tel','custom_phone_validation', 10, 2);
add_filter('wpcf7_validate_tel*', 'custom_phone_validation', 10, 2);
© www.soinside.com 2019 - 2024. All rights reserved.