Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Wordpress plugins » Tùy biến thông báo lỗi validation – Contact Form 7

Tùy biến thông báo lỗi validation – Contact Form 7

Chủ Nhật, 26/10/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Hi! Trong bài viết này mình sẽ hướng dẫn các bạn cách tùy biến hiển thị thông báo validation cho trường contact form 7.
wpcf7-validation

Sửa nội dung và tùy biến validation

Sửa chuỗi hiển tin nhắn lỗi, ví dụ thông báo mặc định cho “require field” là “Please fill the required field.”. Để thay đổi tin nhắn này bạn truy cập trang sửa form Contact -> Contact Forms và sửa lại văn bản trong mục Messages.

Bên cạnh đó, bạn có thể thay đổi hiển thị động mọi chuỗi hiển thị có trong mục Messages của cấu hình form, không cần sửa trực tiếp file plugin ‘text.php’ mà sử dụng hook được định nghĩa trong file này. Bạn hoàn toàn tùy biến ‘validation’ dễ dàng bằng cách thêm filter wpcf7_validate_text trong theme functions.php hoặc viết vào plugin mới của bạn.

add_filter( 'wpcf7_validate_text', 'your_validation_filter_func', 10, 2 );
add_filter( 'wpcf7_validate_text*', 'your_validation_filter_func', 10, 2 );

function your_validation_filter_func( $result, $tag ) {
	$type = $tag['type'];
	$name = $tag['name'];

	if ( 'your-id-number-field' == $name ) {
		$the_value = $_POST[$name];

		if ( is_not_valid_against_your_validation( $the_value ) ) {
			$result['valid'] = false;
			$result['reason'][$name] = "Error message here";
		}
	}

	return $result;
}

Thêm ký tự * sau tên hook sử lý cho trường yêu cầu, bắt buộc nhập. Giá trị trường có thỏa mãn hay không bạn thiết lập kết quả $result['valid']=true.
Tham số $tag chứa thông tin dữ liệu về field. Bạn có thể sử lý qua lớp WPCF7_Shortcode. Xem thêm tại đây.

Chú ý Bạn có thể sửa lại chuỗi hiển thị validation cho trường vào giá trị ‘reason’ như sau: $result['reason'][$name]="validation modified...";

Mặc định chuỗi validation lấy trong phần messages settings bởi hàm wpcf7_get_message. Xác định chuỗi lỗi với các loại message phù hợp cần hiển thị. Ví dụ required field, chúng ta lấy message ‘invalid_required’.

if ( 'textarea*' == $type ) {
		if ( '' == $value ) {
			$result['valid'] = false;
			$result['reason'][$name] = wpcf7_get_message( 'invalid_required' );
		}
	}

Tham số $result được kế thừa vào hook wpcf7_before_send_mail trước khi trả về kết quả json. Bạn có thể sử dụng tham số này để tùy biến thêm.

Mỗi field shortcode sử dụng hook validation riêng, tên hook tương ứng với loại field theo sau bởi tên shortcode. vd: [ select menu-891 “1” “2” “3” ]
có validation hook là wpcf7_validate_select & wpcf7_validate_select* dành cho trường require [ select* menu-891 “1” “2” “3” ]
Do đó mỗi trường shortcode sẽ có 2 loại hook tương ứng , bạn nên trỏ 2 hook này vào một hàm kiểm tra validation của trường.

Ví dụ sau đây sửa lại validation cho email field, bắt buộc người dùng phải sử dụng email của công ty, không cho phép dùng free mail như: gmail, yahoo,…Sửa lại đoạn code dưới đây theo ý bạn.

// Add custom validation for CF7 form fields
function is_company_email($email){ // Check against list of common public email providers & return true if the email provided *doesn't* match one of them
	if(
		preg_match('/@gmail.com/i', $email) ||
		preg_match('/@hotmail.com/i', $email) ||
		preg_match('/@live.com/i', $email) ||
		preg_match('/@msn.com/i', $email) ||
		preg_match('/@aol.com/i', $email) ||
		preg_match('/@yahoo.com/i', $email) ||
		preg_match('/@inbox.com/i', $email) ||
		preg_match('/@gmx.com/i', $email) ||
		preg_match('/@me.com/i', $email)
	){
		return false; // It's a publicly available email address
	}else{
		return true; // It's probably a company email address
	}
}
function custom_email_validation_filter($result,$tag){
	$type = $tag['type'];
	$name = $tag['name'];
	if($name == 'company-email'){ // Only apply to fields with the form field name of "company-email"
		$the_value = $_POST[$name];
		if(!is_company_email($the_value)){ // Isn't a company email address (it matched the list of free email providers)
			$result['valid'] = false;
			$result['reason'][$name] = 'You need to provide an email address that isn\'t hosted by a free provider.<br />Please contact us directly if this isn\'t possible.';
		}
	}
	return $result;
}
add_filter('wpcf7_validate_email','custom_email_validation_filter', 10, 2); // Email field
add_filter('wpcf7_validate_email*', 'custom_email_validation_filter', 10, 2); // Req. Email field

Hiển thị Static hoặc Floating-tip

wpcf7 có 2 lựa chọn cho tin nhắn lỗi validation: static và floating-tip. Static hiện tại là lựa chọn mặc định. Float-tip sử dụng css position:absolute; hiển thị nổi như thế này.
wpcf7-validation-msg

Để áp dụng kiểu field với thông validation dạng ‘floating-tip’ và có thể sử dụng cho toàn fields trong form. Nguyên tắc cơ bản khi form field có thẻ bao chứa class ‘use-floating-validation-tip’ sẽ hiển thị tin nhắn lỗi (validation) float-tip khi trường có giá trị sai hoặc các trường yêu cầu (require *). Ví dụ:

<span class="use-floating-validation-tip">[ text* your-name ]</span>

Nếu bạn muốn áp dụng float-tip style cho tất cả fields trong form, tức là thêm class="use-floating-validation-tip" vào thẻ form. Trong bài tạo form liên hệ trong wordpress với WPCF7 mình có hướng dẫn cách thêm bạn chỉ việc thêm chuỗi này vào thuộc tính html_class cho shortcode hiển thị form contact-form-7.
Ví dụ:

[ contact-form-7 id="1234" title="Contact form 1" html_class="use-floating-validation-tip" ]

Tham khảo:
Plugin hiển thị validation Jquery Validation For Contact Form 7

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress, Wordpress plugins Tìm kiếm: contact form 7, form validation

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.