source

문의 양식 7 전화번호 확인

ittop 2023. 3. 8. 21:47
반응형

문의 양식 7 전화번호 확인

연락처 양식 7에 내장된 확인 방법을 사용하여 전화번호를 확인하려고 합니다.

문의 양식 7 마크업:

<p>[number* your-telephone min:1000000000 max:9999999999 placeholder "Telephone number"] </p>

<p>[submit "submit"]</p>

여기서 하려고 하는 것은, 입력 타입의 번호의 최소 속성 및 최대 속성을 사용해 전화 번호를 제한하는 것입니다.다만, 여기서 문제가 되는 것은, 0402356584 라고 하는 전화 번호를 입력해도, 최소치에는 못 미치지만, 전화 번호인 것입니다.

그러면 가능한 모든 10자리 전화번호를 지원하도록 최소값과 최대값을 설정하려면 어떻게 해야 할까요?

제 접근 방식과는 다른 어떤 해결책도 환영합니다.min 속성 및 max 속성으로는 검증할 수 없다는 느낌이 들기 때문입니다.

플러그인 파일도 함수로 편집해 보았습니다.소스 코드를 사용하여 php 파일을 만들었지만 작동하지 않았습니다.

따라서 연락처 양식 7에 기재된 전화번호를 확인할 수 있는 완벽한 솔루션이 있다면 답변을 게시해 주십시오.

반드시 이것을 사용해 보세요.연락처 폼7의 매뉴얼에 따라 동작합니다.

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

[ tel * tel - 672 ]필드를 사용하여 wpcf7_is_tel filter hook을 사용하여 요건에 따라 검증할 수 있습니다.

Contact Form 7에는 임의의 필드를 검증할 수 있는 다수의 사전 정의된 후크가 있습니다.여기에서는 Contact Form 7 포맷입니다.php 모듈 검증 규칙은 다음 방법으로 정의됩니다.함수를 통해 apply_filters에서 언급된 필터 후크로 덮어쓸 수 있습니다.php

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

아래 코드를 함수에 추가해 주세요.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 );

많이 볼 수 있습니다.

저 같은 경우에는 아래 코드가 동작하고 있습니다.중요한 점은 다음과 같이 입력 유형이 '전화'여야 한다는 것입니다.

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

이는 tel type 필드에 적용됩니다.숫자 또는 텍스트 필드를 사용하려면 코드뿐만 아니라 필터 매개 변수에서 '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);

함수 custom_phone_validation(결과,$tag){$type = $tag['type'];
$name = $tag['name'];
if specname == 'specenumber'){$phoneNumber =isset($_POST['phonenumber']) ? 트림($_POST['phonenumber']) : ';$the_value = 전화번호의 preg_match/your_reg_exp 형식/,$_POST[$name]);if($phoneNumber == " | $the_value == false ){$result-> supperate ($tag, "please enter vailed phone number" );}}$result를 반환한다.}add_filter wpcf7_pcf_tel', custom_phone_validation', 10, 2);add_filter wpcf7_pcf_tel*', 'custom_phone_validation', 10, 2);

phonenumber -> 필드명

이거 기능적으로 써보세요.php 파일.

필터: https://plugins.trac.wordpress.org/browser/contact-form-7/trunk/modules/text.php wpcf7_validate_tel 해서 '아까운데 없다'라는 기능을 사용합니다.wpcf7_validate_tel( $result, $tag )

이것을 시험해 보세요.

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

행운을 빌어요!!

츄차!

좋은 방법이 있는 것 같은데...

기본적으로는 number 필드에는 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_function의 경우)...및 검증 필터

$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 함수)

그리고 이제 숫자에 붙이세요.php는 올바른 위치에 있습니다.따라서 wpcf7_number_form_tag_handler 함수는 다음과 같습니다.

$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;

다른 솔루션에서는 방문자가 제출 시 지역번호를 포함하도록 하기 위해 최소 길이가 10인 것이 바람직하다.또한 방문객이 국가 코드를 입력하고 "+1 555-555-555"를 대시하는 경우 15자를 사용할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/35425854/contact-form-7-telephone-number-verification

반응형