ใครก็ตามที่เคยมีเว็บไซต์ที่มีแบบฟอร์มต้องเคยพบกับการส่งสแปม อินเทอร์เน็ตดูเหมือนจะเต็มไปด้วยบอทที่ส่งคำขอเกี่ยวกับหัวข้อเดียวกันเสมอ บ่อยครั้งเป็นภาษารัสเซีย reCAPTCHA เป็นเพียงชื่อแปลกๆ ของกลไกบางอย่างที่ปกป้องแบบฟอร์ม HTML จากการส่งสแปมของบอท เทคนิคก่อนหน้านี้บางส่วนรวมถึงการตอบคำถามที่บอทไม่สามารถตอบได้ เช่น “2 + 2 = ?” สองสามปีที่ผ่านมา Google ได้สร้างสคริปต์เวอร์ชันของตัวเองซึ่งเคยมีช่องกาเครื่องหมาย “ฉันไม่ใช่หุ่นยนต์” ให้คลิก จากนั้นก็มีเวอร์ชันอื่นๆ ที่มีรูปภาพซึ่งคุณต้องคลิกรูปภาพที่มีไฟจราจรหรือรถยนต์ เวอร์ชันล่าสุด v3 ไม่ต้องการสิ่งเหล่านี้เลย เห็นได้ชัดว่ามันทำงานได้ไม่สมบูรณ์แบบเนื่องจากคุณยังได้รับสแปมอยู่บ้าง แต่ก็ยังตัดสแปมส่วนใหญ่ออกไปได้
reCaptcha ถูกรวมเข้าในแบบฟอร์มติดต่อที่ 7 ของ WordPress
ในตอนนี้ปลั๊กอินที่ใช้จัดการแบบฟอร์มการติดต่อใน WordPress ที่เห็นได้ชัดเจนที่สุดคือ “Contact Form 7” (ทำไมถึงเป็น “7” เราไม่เคยรู้มาก่อน แต่เดาว่าปลั๊กอินนี้เคยพยายามจัดการมาแล้ว 6 ครั้ง) และลองเดาดูสิว่าปลั๊กอินนี้สามารถจัดการ reCaptcha ได้โดยตรงโดยไม่ต้องติดตั้งปลั๊กอินเพิ่มเติม
ในหน้าการผสานรวม คุณสามารถตั้งค่าการผสานรวมกับ reCaptcha ของ Google ได้

ตรวจสอบบทช่วยสอนด้านล่างเกี่ยวกับวิธีการลงทะเบียนเว็บไซต์ของคุณและรับคีย์ไซต์
เท่านี้ reCaptcha ก็ปกป้องแบบฟอร์มทั้งหมดแล้ว… ยกเว้นโปรแกรมเมอร์ขี้เกียจที่ Contact Form 7 จะเพิ่มแบบฟอร์มนี้ลงในทุกหน้าของเว็บไซต์ของคุณ ในขณะที่แบบฟอร์มส่วนใหญ่มักจะอยู่ในหน้าเหล่านั้นเพียงไม่กี่หน้าเท่านั้น reCaptcha จะทำให้เว็บไซต์ของคุณพองตัวด้วย CSS และ Javascript ที่ไม่จำเป็น และยังเรียกเซิร์ฟเวอร์ของ Google ในทุกๆ หน้าอีกด้วย
การโหลดสินทรัพย์เฉพาะเมื่อจำเป็นเท่านั้น
โชคดีที่ปัญหาใดๆ ก็มีทางแก้ไขเสมอ ในเว็บไซต์นี้ เราได้เพิ่มโค้ดนี้ลงในไฟล์ functions.php ของธีมของเรา แนวคิดคือลบสคริปต์ CF7 ออกจากทุกหน้า (“เอา” สคริปต์ออก) จากนั้นเพิ่มกลับเข้าไปในหน้าที่จำเป็นเท่านั้น
function manage_cf7_js_styles_recaptcha() {
// Dequeue cf7 and recaptcha scripts and styles, preventing them from loading everywhere
wp_dequeue_script( 'contact-form-7' );
wp_dequeue_script( 'google-recaptcha' );
wp_dequeue_style( 'contact-form-7' );
// If current post has cf7 shortcode, enqueue!
global $post;
$template = get_page_template_slug($post->ID);
if( $template == 'page-contact-us.php' || $template == 'page-careers.php' || $template == 'page-current-job-openings.php' ){
if ( function_exists( 'wpcf7_do_enqueue_scripts' ) ) {
wpcf7_do_enqueue_scripts();
wp_enqueue_script( 'google-recaptcha' );
}
}
}
add_action( 'wp_enqueue_scripts', 'manage_cf7_js_styles_recaptcha', 10, 0 );
เราจะทราบได้ว่าเมื่อใดจึงจำเป็นต้องใช้ reCaptcha โดยตรวจสอบเทมเพลตของหน้าที่แสดงอยู่ปัจจุบัน โดยปกติแล้วเราจะมีแบบฟอร์มติดต่อเฉพาะในหน้า “ติดต่อเรา” “อาชีพ” และ “ตำแหน่งงานว่างในปัจจุบัน” เท่านั้น
วิธีอื่นคือการตรวจสอบหน้าต่างๆ ตาม ID หรือตรวจสอบว่าใช้ชอทโค้ดจากแบบฟอร์มติดต่อ 7 หรือไม่:
if ( isset( $post->post_content ) AND has_shortcode( $post->post_content, 'contact-form-7' ) ) {
เราหวังว่าบทความนี้จะมีประโยชน์!