문의 양식 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
'source' 카테고리의 다른 글
create-module-app을 사용하는 동안 public, src 및 scripts 폴더가 생성되지 않음 (0) | 2023.03.08 |
---|---|
Python에서 JSON을 시리얼화할 때 "TypeError: (Integer) is not JSON serializable?" (유형 오류: (Integer)는 JSON serializable입니까?) (0) | 2023.03.08 |
Angular.js: HH:mm:ss 필터까지의 초수 (0) | 2023.03.08 |
Wordpress : 태그의 투고 수를 카운트하는 방법 (0) | 2023.03.08 |
가시성이 AngularJs에 숨겨져 있습니까? (0) | 2023.02.26 |