wpurok.ru wordpress WPUrok

Как добавить автоматическое удаление спама в комментариях WordPress

Спам в комментариях — одна из частых проблем, с которой сталкиваются владельцы сайтов на WordPress. Даже при использовании популярных антиспам-плагинов часть нежелательных комментариев может проходить фильтры. В этой статье рассмотрим, как автоматизировать удаление спама в комментариях WordPress с помощью кода и плагинов, а также дадим практические рекомендации по их настройке.

Почему стандартных антиспам-плагинов недостаточно

Многие сайты используют Akismet, Antispam Bee или WPSpamShield для фильтрации спама. Они работают хорошо, но иногда спам все равно попадает в базу комментариев, например, из-за новых видов ботов или сложных капч.

Кроме того, скопившийся спам нагружает базу данных и замедляет работу сайта, а ручная проверка и удаление занимает много времени.

Поэтому полезно внедрить автоматическое удаление спам-комментариев, которые долго не проверяются, и уведомлять администраторов о подозрительных комментариях.

Автоматическое удаление спама по времени: пример реализации

Один из простых способов — настроить WP-Cron, который будет регулярно удалять спам-комментарии старше определенного времени, например, 7 дней. Ниже пример кода для functions.php вашей темы или кастомного плагина.

<?php
// Планируем задачу при активации темы/плагина
function wpurok_schedule_spam_cleanup() {
    if (!wp_next_scheduled('wpurok_cleanup_spam_hook')) {
        wp_schedule_event(time(), 'daily', 'wpurok_cleanup_spam_hook');
    }
}
add_action('wp', 'wpurok_schedule_spam_cleanup');

// Функция удаления спама старше 7 дней
function wpurok_cleanup_spam_comments() {
    global $wpdb;
    $date = date('Y-m-d H:i:s', strtotime('-7 days'));
    // Получаем ID спам-комментариев старше 7 дней
    $spam_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
        $date
    ));
    if ($spam_ids) {
        foreach ($spam_ids as $id) {
            wp_delete_comment($id, true); // Принудительно удаляем
        }
    }
}
add_action('wpurok_cleanup_spam_hook', 'wpurok_cleanup_spam_comments');

// Очищаем расписание при деактивации темы/плагина
function wpurok_clear_spam_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wpurok_cleanup_spam_hook');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpurok_cleanup_spam_hook');
    }
}
register_deactivation_hook(__FILE__, 'wpurok_clear_spam_cleanup_schedule');
?>

Этот код создает ежедневное событие, которое удаляет все спам-комментарии старше недели, что помогает держать базу в порядке автоматически.

Использование плагинов для расширенного контроля спама

Помимо собственного кода, можно использовать плагины с расширенными возможностями:

  • Clearfy Pro — содержит модули для оптимизации и антивирусной защиты, включая антиспам-фильтры, а также позволяет управлять автоматическим удалением спама и записей.
  • Expert Review — плагин для управления отзывами и комментариями с возможностью фильтрации по качеству и автоматического удаления низкокачественных комментариев.

Эти плагины помогут настроить более тонкую фильтрацию и автоматизацию без написания кода.

Как предотвратить попадание спама в комментарии

Лучше всего комбинировать автоматическое удаление с профилактикой:

  • Используйте WPGPT для интеллектуального анализа комментариев с помощью ИИ, который может распознавать спам и неформатный контент.
  • Включите капчу (Google reCAPTCHA или аналог) на форму комментариев.
  • Ограничьте количество ссылок в комментариях.
  • Используйте черные списки слов и IP.

Все эти методы вместе значительно снизят количество поступающего спама и облегчат поддержку сайта.

Отслеживание и уведомления о подозрительных комментариях

Для своевременного реагирования можно добавить уведомления администратору о новых комментариях, помеченных как спам или требующих модерации. Пример простого кода для отправки письма при появлении спам-комментария:

function wpurok_notify_admin_on_spam($comment_ID, $comment_approved) {
    if ($comment_approved === 'spam') {
        $comment = get_comment($comment_ID);
        $admin_email = get_option('admin_email');
        $subject = 'Новый спам-комментарий на сайте';
        $message = "Обнаружен спам-комментарий от " . $comment->comment_author . ":\n" . $comment->comment_content;
        wp_mail($admin_email, $subject, $message);
    }
}
add_action('wp_set_comment_status', 'wpurok_notify_admin_on_spam', 10, 2);

Так вы всегда будете в курсе активности и сможете при необходимости скорректировать фильтры.

Резюме и рекомендации

Автоматическое удаление спама в комментариях — важный элемент поддержки сайта на WordPress. Самый простой и надежный способ — настроить регулярное удаление старых спам-комментариев через WP-Cron и добавить уведомления для администраторов.

Совместно с современными антиспам-плагинами и мерами профилактики это позволит существенно снизить нагрузку на сайт и улучшить пользовательский опыт.

Для расширенных возможностей рекомендуем обратить внимание на Clearfy Pro и Expert Review.

×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙