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

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

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

Ручная модерация комментариев занимает много времени, особенно если сайт популярен. Многие спам-комментарии не несут никакой пользы, а лишь загромождают базу данных и ухудшают пользовательский опыт. Автоматическое удаление спама позволит:

  • Экономить время администратора сайта;
  • Уменьшить нагрузку на сервер и базу данных;
  • Поддерживать чистоту и порядок в разделе комментариев;
  • Улучшить SEO за счет отсутствия большого количества бесполезных ссылок и текста.

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

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

Akismet Anti-Spam

Это один из самых популярных и надежных плагинов для борьбы со спамом. Он автоматически проверяет комментарии и помечает подозрительные как спам. По умолчанию Akismet не удаляет спам, а перемещает его в отдельную папку — «Спам».

Чтобы настроить автоматическое удаление, можно добавить следующий код в файл functions.php вашей темы:

function wptest_auto_delete_spam_comments() {
    global $wpdb;
    // Удаляем все комментарии, помеченные как спам старше 7 дней
    $wpdb->query(
        "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < NOW() - INTERVAL 7 DAY"
    );
}
add_action('wp_scheduled_delete', 'wptest_auto_delete_spam_comments');

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

WP SpamShield Anti-Spam

Ещё один мощный плагин, который блокирует спам на уровне формы и сервера, не требуя капчи. Он автоматически удаляет спам и не хранит его в базе, что экономит место и ресурсы.

Плагин прост в установке и не требует дополнительной настройки для автоматического удаления. Подробнее и скачать можно на WPSHOP.ru.

Реализация собственного решения для автоматического удаления спама

Создание WP Cron задачи для удаления спама

Если вы хотите контролировать процесс удаления спама без сторонних плагинов, можно настроить собственный WP Cron, который будет регулярно очищать базу.

Добавьте следующий код в functions.php вашей темы или в отдельный плагин:

function wptest_schedule_spam_cleanup() {
    if (!wp_next_scheduled('wptest_daily_spam_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wptest_daily_spam_cleanup');
    }
}
add_action('wp', 'wptest_schedule_spam_cleanup');

function wptest_delete_old_spam_comments() {
    global $wpdb;
    $days = 7; // количество дней для хранения спама
    $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $wpdb->comments WHERE comment_approved = %s AND comment_date < NOW() - INTERVAL %d DAY",
            'spam',
            $days
        )
    );
}
add_action('wptest_daily_spam_cleanup', 'wptest_delete_old_spam_comments');

Этот код устанавливает ежедневную задачу, которая удаляет спам-комментарии старше 7 дней. Вы можете изменить период хранения, заменив значение переменной $days.

Добавление уведомления в админку о количестве удаленного спама

Для улучшения контроля можно добавить уведомление в административную панель, которое покажет количество удаленных спам-комментариев за последнюю очистку:

function wptest_spam_cleanup_admin_notice() {
    if (get_transient('wptest_spam_deleted_count')) {
        $count = get_transient('wptest_spam_deleted_count');
        echo '<div class="notice notice-success is-dismissible">';
        echo '<p>Автоматическое удаление спама: удалено <strong>' . esc_html($count) . '</strong> комментариев.</p>';
        echo '</div>';
        delete_transient('wptest_spam_deleted_count');
    }
}
add_action('admin_notices', 'wptest_spam_cleanup_admin_notice');

function wptest_delete_old_spam_comments() {
    global $wpdb;
    $days = 7;
    $count = $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM $wpdb->comments WHERE comment_approved = %s AND comment_date < NOW() - INTERVAL %d DAY",
            'spam',
            $days
        )
    );
    set_transient('wptest_spam_deleted_count', $count, 60);
}

Теперь после выполнения задачи в админке появится сообщение о количестве удаленных спам-комментариев.

Дополнительные советы по борьбе со спамом в комментариях WordPress

Помимо автоматического удаления, важно минимизировать попадание спама на сайт:

  • Используйте CAPTCHA. Плагины вроде Google reCAPTCHA помогут отсеять ботов.
  • Ограничьте ссылки в комментариях. Установка лимитов на количество ссылок снижает спам.
  • Включите обязательную модерацию. Для новых пользователей проверяйте комментарии вручную.
  • Используйте плагин Clearfy Pro. Он позволяет быстро настроить фильтры спама и отключить ненужные возможности.

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

Как создать адаптивный шаблон WordPress с нуля
15.11.2025
Как использовать хуки в WordPress: практическое руководство
03.12.2025
Как удалить неиспользуемые шорткоды в WordPress
18.01.2026
Как использовать REST API в WordPress для создания кастомных эндпоинтов
29.11.2025
Как создать собственный шорткод WordPress
01.11.2025