Chống SPAM cho Contact Form 7 hiệu quả nhất
Một vấn đề nhức nhối nhất khi chèn form vào website là bị bot nó auto spam quá. Mail spam từ cf7 suốt ngày luôn. Tức mà không làm gì được thì bài này sẽ giúp bạn chống/chặn luôn auto spam đó nhé
Chuyện là gần đây mình có 1 người inbox hỏi cách chặn spam cho cf7. Thấy bạn đó bảo đã cài akismet, recaptcha, wordfence, format sđt theo Việt Nam mà vẫn bị spam… may mắn cho bạn đó là mình sẵn có code tự làm nên chia sẻ luôn. Ấy vậy mà hiệu quả lắm nhé. Bạn đó bảo không còn thấy spam nữa… mừng quá và chia sẻ luôn cho mọi người cùng thử nha
Nguyên nhân: Đa số spam này là do bot auto spam. Nó cứ chèn đủ các field trong form và submit thôi. Kiểu submit auto luôn ý
Giải pháp: Nên mình nghĩ sao không làm 1 field ẩn. Sau đó check field đó nếu nó được nhập nội dung thì đích thị nó là SPAMER rồi đó 😀 chứ người thường không thể thấy field ẩn đó để điền được 😀
Đến code: mình bắt tay vào code luôn nhé. do code sẵn nên các bạn chỉ cần copy code sau chèn vào wp-content/themes/{your-theme}/functions.php là được
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* * Chống spam cho contact form 7 * Author: contact form 7 * */ /*Thêm 1 field ẩn vào form cf7*/ add_filter('wpcf7_form_elements', 'devvn_check_spam_form_cf7'); function devvn_check_spam_form_cf7($html){ $html = '<div style="display: none"><p><span class="wpcf7-form-control-wrap" data-name="devvn"><input size="40" class="wpcf7-form-control wpcf7-text" aria-invalid="false" value="" type="text" name="devvn"></span></p></div>' . $html; return $html; } /*Kiểm tra form đó mà được nhập giá trị thì là spam*/ add_action('wpcf7_posted_data', 'devvn_check_spam_form_cf7_vaild'); function devvn_check_spam_form_cf7_vaild($posted_data) { $submission = WPCF7_Submission::get_instance(); if (!empty($posted_data['devvn'])) { $submission->set_status( 'spam' ); $submission->set_response( 'You are Spamer' ); } unset($posted_data['devvn']); return $posted_data; } |