Hướng dẫn chống spam bình luận, spam email cho wordpress

Bài viết đăng bởi huynh vào lúc 24-07-2023 và cập nhật lúc 25-07-2023 110 lượt xem

Giới thiệu

Chắc hẳn spam bình luận, spam điền form email đều là vấn đề nan giải và gây đau đầu cho rất nhiều người sử dụng website. Spam này diễn ra liên tục làm ảnh hưởng nặng nề tới SEO bài viết, gây phiền nhiễu cho hộp thư điện tử của cá nhân hay doanh nghiệp. Đặc biệt hơn thì sẽ gây ra việc tiêu tốn nhân lực cho việc dành riêng ra người lọc thư rác, spam, có khi sẽ bị trôi cả những khách hàng thực sự có nhu cầu.

Hướng dẫn

Chống spam bình luận

Cách 1: Chống spam comment bằng Plugin

Để chống được spam bình luận wordpress thì thường các website sẽ sử dụng capcha hay recapcha của google nhưng hiện nay, các bot đã có thêm extention bỏ qua capcha nên việc này không còn hiệu quả đối với website nữa.

Hay có bên sẽ yêu cầu khách hàng phải đăng nhập tài khoản nhưng việc này gây ra sự rườm rà và gây khó chịu cho khách hàng.

Tigoweb sẽ đưa cho các bạn một plugin, nó giúp các bạn thêm câu hỏi cho khách hàng trước khi khách hàng gửi bình luận. Plugin này cho khách hàng đưa ra nhiều câu hỏi và câu hỏi sẽ được chọn ngẫu nhiên trong số lượng câu hỏi đã đưa ra. Điều này tránh được bot spam với nội dung không liên quan. Mặc dù tính năng này rất đơn giản nhưng những người sử dụng wordpress ít nắm được về code nên plugin này hỗ trợ khá tốt cho họ.

Giao diện sau khi cài đặt và sử dụng plugin

Link tải plugin nằm trong phần bình luận của Video tại link: https://youtu.be/Mj2TnGhrSAg

Cách 2: Chống spam comment bằng thêm code

Để làm được cách này các bạn cần thực hiện theo các bước sau đây

Bước 1: các bạn truy cập vào mục Giao diện>Theme file editor

Bước 2: Chọn file Function.php

Bước 3: Thêm đoạn code dưới và lưu lại là đã hoàn thành rồi

// Hiển thị câu hỏi trước form comment
$question_answer_pairs = array(
    array(
        'question' => 'Con hổ có mấy chân?',
        'answer' => '4',
    ),
    array(
        'question' => '1 + 1 bằng mấy?',
        'answer' => '2',
    ),
    array(
        'question' => 'Bốn + ba bằng mấy?',
        'answer' => '7',
    ),
);

function custom_show_random_comment_question() {
    global $question_answer_pairs;
    $random_question = $question_answer_pairs[array_rand($question_answer_pairs)];
    ?>
    <p>
        Vui lòng trả lời câu hỏi sau:
        <span style="color: red;"><?php echo $random_question['question']; ?></span>
    </p>
    <p>
        <label for="comment_question">Câu trả lời: </label>
        <input type="text" name="comment_question" id="comment_question" required>
    </p>
    <?php
}

add_action('comment_form_before', 'custom_show_random_comment_question');

function custom_check_comment_question($commentdata) {
    global $question_answer_pairs;
    $expected_answer = '';

    if (isset($_POST['comment_question'])) {
        $user_answer = sanitize_text_field($_POST['comment_question']);

        // Tìm câu trả lời đúng của câu hỏi trong mảng
        foreach ($question_answer_pairs as $qa_pair) {
            if ($qa_pair['question'] === $_POST['comment_question']) {
                $expected_answer = $qa_pair['answer'];
                break;
            }
        }

        if (strcasecmp($user_answer, $expected_answer) !== 0) {
            wp_die('Câu trả lời không chính xác. Vui lòng thử lại.');
        }
    }

    return $commentdata;
}

add_filter('preprocess_comment', 'custom_check_comment_question');

 

Chống spam email

Cách 1:

Để chống spam email thì trong contact form 7 có cung cấp 1 công cụ khá hữu hiệu mà ít ai để ý đến đó chính là phần “câu hỏi” ( Quiz ). Ở form này nếu bot điền form không trả lời câu hỏi sẽ không thể gửi được.

Cách 2: Dành cho form có trường điền số điện thoại

Ở cách này chúng ta sẽ cần thêm một chút đoạn code để nhận diện định dạng đó có đúng là sdt khách hàng có đúng định dạng sdt của Việt Nam hay không

Bước 1: Truy cập vào trang quản trị

Bước 2: Chọn Giao diện > Theme File Editor

Bước 3: Chọn Function.php thêm đoạn mã phía dưới và lưu lại

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

Sau khi thêm xong chỉ cần lưu lại và ra kiểm tra là hoàn thành.

Các bạn có thể tham khảo thêm nhiều hơn trên kênh youtube Tigoweb

Youtube: https://www.youtube.com/@tigowebvn

Trả lời