1BANNER 123
4.9/5 - (262 bình chọn)

Hôm nay mình sẽ hướng dẫn cho các bạn 1 số cách set up form sử dụng plugin CF7 để có thể hạn chế tối đa việc spam form nhé.

Bài viết này dựa trên hiểu biết của cá nhân mình, nên nó sẽ có mặt hạn chế, các bạn có thiện ý hoàn toàn có thể ib để giúp mình cải thiện hơn về chất lượng bài viết, mình rất cảm ơn.

Mình sẽ thực hiện việc này dựa trên 2 điều, đó là sử dụng captcha (Chế lại) và sử dụng các điều kiện ràng buộc ở những field như số điện thoại.

Để tải toàn bộ code, các bạn kéo xuống dưới cùng của bài viết nhé

Đầu tiên, các bạn thêm function tạo shortcode này vào file function giúp mình nhé.

function cre_random_captcha_pttuan(){
	ob_start();
		$random = array(
			'thanhtuan',
			'deptrai',
			'taigioi',
			'donate'
		);
		echo '<input type="text" name="captcha-pttuan" readonly value="'.$random[array_rand($random)].'"/>';
	$content = ob_get_contents();
    ob_end_clean();
    return $content;

}
add_shortcode('cre_random','cre_random_captcha_pttuan');

Hàm này sẽ tạo và hiển thị các text random, mình sẽ sử dụng các text này để tạo 1 captcha siêu cấp ^^.

Chỗ $random các bạn có thể thêm bất kì text nào mình muốn, chỉ cần đúng cú pháp ‘text bạn muốn thêm’, và dấu phẩy như mình là được nhé.

Sau đó các bạn tạo giúp mình 1 cái form với nội dung như sau

[text* text-90 placeholder "Họ và tên"]
[tel* tel-56 placeholder minlength:10 maxlength:10 "Số điện thoại"]
[textarea textarea-564 placeholder "Nội dung yêu cầu"]
[acceptance acceptance-149] Bạn đồng ý với các điều khoản thành [/acceptance]
[cre_random]
[text* text-91 placeholder "Điền nội dung bên cạnh để gửi form"]
[submit "Gửi yêu cầu"]
Form sau khi thêm

Trong form này mình có chèn sẵn shortcode tạo text random trên rùi nhé. Các bạn lưu ý ở field text-91 phải là bắt buộc nhập nhé, ô này chúng ta sẽ nhập cái text phía trên vào và nó sẽ xử lý ở backend.

Các bạn vào lại file function để thêm đoạn code này giúp mình nhé.

function check_captcha_validation($result,$tag){
    $type = $tag->type;
    $name = $tag->name;
    if($type == 'text' || $type == 'text*'){
			if($name == 'text-91'){
				$text = isset( $_POST[$name] ) ? trim( $_POST[$name] ) : '';
				$check = isset( $_POST['captcha-pttuan'] ) ? trim( $_POST['captcha-pttuan'] ) : '';
				if ($text != $check){
					$result->invalidate( $tag, 'Bạn nhập sai mã rồi nhé');
				}
		}
    }
    return $result;
}
add_filter('wpcf7_validate_text','check_captcha_validation', 10, 2);
add_filter('wpcf7_validate_text*', 'check_captcha_validation', 10, 2);

Ở đoạn ‘Bạn nhập sai mã rồi nhé’, bạn có thể chỉnh sửa lại theo ý của mình.

Các bạn lưu ý $name các bạn phải để đúng tên name input của mình nhé, ở ví dụ trên name của mình là text-91 nên mình cũng điền vào đây là text-91.

Như vậy là xong, các bạn có thể check tại trang demo của mình nhé. https://pttuan410.com/demo/

Khi bạn nhập sai thông tin thì nó sẽ báo như thế này.

Để có thể ràng buộc thêm, các bạn có thể xử lý field số điện thoại bằng điều kiện số ký tự và check các đầu số tại Việt Nam hiện tại. Ví dụ trên mình đã thêm điều kiện số điện thoại phải đủ 10 số.

Để check được đầu số của Việt Nam, các bạn thêm đoạn code này vào file function giúp mình nhé

function check_phone_pttuan( $result, $tel )
{
$result = preg_match( '/^(09|03|07|08|05)+([0-9]{8})$/', $tel );
return $result; }
add_filter( 'wpcf7_is_tel', 'check_phone_pttuan', 10, 2 ); 

Như vậy là hoàn thành việc đặt các điều kiện khi gửi form rồi, với các bước này các bạn có thể hạn chế mức tối đa nhất của việc bị spam form nhé.

Cảm ơn các bạn đã theo dõi bài viết.

Để có các form contact đẹp, các bạn xem bài viết này nhé: https://pttuan410.com/mau-contact-form-7-dep-cho-wordpress/

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *