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

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

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

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

  • Сократить нагрузку на администратора сайта;
  • Уменьшить количество мусорных комментариев, улучшая качество контента;
  • Повысить скорость загрузки страниц за счёт уменьшения объёма данных;
  • Улучшить SEO благодаря отсутствию мусорных ссылок и спамного контента.

Для эффективной борьбы со спамом в WordPress существует множество решений, включая плагины и кастомные скрипты.

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

Akismet Anti-Spam

Akismet — самый известный плагин для борьбы со спамом. Он автоматически анализирует комментарии и помещает подозрительные в папку со спамом. Для автоматического удаления спама через определённое время нужно настроить cron-задачу или использовать вспомогательные плагины.

Для установки и активации:

  1. Перейдите в Плагины > Добавить новый в админке WordPress.
  2. Найдите Akismet Anti-Spam и установите плагин.
  3. Активируйте его и подключите к API-ключу, который можно получить на официальном сайте.

Для удаления спам-комментариев старше 30 дней можно настроить WP-Cron задание, либо использовать плагин WP Bulk Delete.

WP Bulk Delete

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

Настройка:

  • Установите и активируйте WP Bulk Delete.
  • В разделе плагина выберите "Удаление комментариев" и укажите фильтры: статус — спам, возраст — более 7 дней.
  • Настройте расписание, чтобы удаление происходило автоматически.

Автоматическое удаление спама с помощью собственного кода

Если вы хотите обойтись без дополнительных плагинов, можно добавить функцию в файл functions.php вашей темы или в собственный плагин, которая будет удалять спам-комментарии старше определённого времени.

Пример функции для удаления спама старше 7 дней:

function wpbegin_delete_old_spam_comments() {
    global $wpdb;
    $days = 7; // количество дней
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $comments = $wpdb->get_results($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
        $date
    ));

    if ($comments) {
        foreach ($comments as $comment) {
            wp_delete_comment($comment->comment_ID, true);
        }
    }
}

// Запускаем функцию один раз в день
if (!wp_next_scheduled('wpbegin_daily_delete_spam')) {
    wp_schedule_event(time(), 'daily', 'wpbegin_daily_delete_spam');
}
add_action('wpbegin_daily_delete_spam', 'wpbegin_delete_old_spam_comments');

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

Как отладить и проверить работу скрипта

Для проверки правильности работы функции вы можете временно вызвать её вручную, например, добавив вызов wpbegin_delete_old_spam_comments(); в functions.php. После успешного выполнения не забудьте убрать вызов, чтобы избежать лишних удалений.

Также можно добавить логирование удалённых комментариев для контроля:

function wpbegin_delete_old_spam_comments() {
    global $wpdb;
    $days = 7;
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $comments = $wpdb->get_results($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
        $date
    ));

    if ($comments) {
        foreach ($comments as $comment) {
            wp_delete_comment($comment->comment_ID, true);
            error_log('Удалён спам-комментарий ID: ' . $comment->comment_ID);
        }
    }
}

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

Используйте CAPTCHA

Добавление CAPTCHA значительно снижает количество спам-комментариев. Для WordPress есть бесплатные плагины, например, Google Captcha (reCAPTCHA) by BestWebSoft.

Ограничение ссылок в комментариях

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

Использование плагина Clearfy Pro для оптимизации и защиты

Если вы используете Clearfy Pro, в нём есть встроенные функции оптимизации и защиты, которые помогают от спама и нежелательных комментариев. Это комплексный инструмент, который можно настроить под нужды вашего сайта.

Выводы и рекомендации

Автоматическое удаление спама в комментариях — важный аспект поддержания здоровья сайта на WordPress. Наиболее простой способ — использовать Akismet вместе с WP Bulk Delete для регулярной чистки. Для продвинутых пользователей подойдёт кастомный код с WP-Cron, который можно гибко настроить. Не забывайте о дополнительных мерах защиты, таких как CAPTCHA и ограничение ссылок, чтобы сократить поток спама изначально.

Для удобной работы с плагинами и инструментами оптимизации рекомендуем обратить внимание на решения из магазина WPShop, где собраны проверенные инструменты для WordPress.

Как создать выбор фильтра на AJAX в WordPress
09.01.2026
Как создать собственный ключ авторизации в WordPress
25.11.2025
Как создать уникальный хлебные крошки (breadcrumb) в WordPress с поддержкой SEO
19.12.2025
Как создать автоматический импорт постов в WordPress
12.12.2025
Как создать собственный шорткод в WordPress: пошаговое руководство
31.10.2025