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

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

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

По умолчанию WordPress предлагает базовую защиту от спама, но она далеко не всегда эффективна. Спам-комментарии могут:

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

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

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

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

Плагин Akismet Anti-Spam

Akismet — один из самых популярных и надежных плагинов для борьбы со спамом. Он фильтрует спам еще при отправке комментария, но не удаляет автоматически уже накопившийся спам.

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

Плагин WP-SpamShield

WP-SpamShield защищает от спама и может автоматически удалять подозрительные комментарии. Он работает без использования CAPTCHA, что улучшает UX.

Однако плагин не всегда подходит для всех сайтов, поэтому имеет смысл рассмотреть и кастомные решения.

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

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

Пример функции, которая будет удалять все комментарии со статусом "спам", старше 7 дней:

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

    $wpdb->query($wpdb->prepare(
        "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_date < %s",
        $date
    ));
}

// Запуск функции через WP-Cron ежедневно
if (!wp_next_scheduled('wpsystem_daily_delete_spam')) {
    wp_schedule_event(time(), 'daily', 'wpsystem_daily_delete_spam');
}

add_action('wpsystem_daily_delete_spam', 'wpsystem_auto_delete_spam_comments');

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

Настройка расписания и удаление спама вручную

Как проверить, что cron-задача работает

Чтобы убедиться, что задача запускается, можно использовать плагин WP Crontrol. Он позволяет просматривать и управлять WP-Cron событиями прямо из админки.

Удаление спама через WP-CLI

Для более технических пользователей удобен инструмент WP-CLI. Чтобы удалить все спам-комментарии, достаточно выполнить команду:

wp comment delete $(wp comment list --status=spam --format=ids) --force

Это мгновенно очистит базу, но требует доступа к серверу и установленного WP-CLI.

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

Использование капчи и проверок

Для снижения количества спама можно подключить капчу с помощью плагинов, например, My Popup поддерживает интеграцию с reCAPTCHA, что уменьшит число ботов.

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

Спам часто содержит ссылки. В настройках WordPress можно ограничить количество ссылок в комментариях в разделе "Настройки - Обсуждение" или реализовать это программно.

function wpsystem_limit_comment_links($approved, $commentdata) {
    $max_links = 2;
    preg_match_all('/http(s)?:\/\//', $commentdata['comment_content'], $matches);
    if (count($matches[0]) > $max_links) {
        return 'spam';
    }
    return $approved;
}
add_filter('pre_comment_approved', 'wpsystem_limit_comment_links', 99, 2);

Этот код помечает комментарии с более чем двумя ссылками как спам.

Заключение

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

Если хотите более продвинутые инструменты для оптимизации сайта, смотрите решения на wpshop.ru.

Как создать собственный метабокс в WordPress
05.11.2025
Как изменить роли и права пользователей в WordPress через код
30.03.2026
WooCommerce: разрешаем оплату разными валютами в одной корзине
19.04.2026
Как добавить автоматическое обновление тем и плагинов в WordPress
15.04.2026
Как сделать эффективный кэш в WordPress для уменьшения нагрузки на сервер
28.01.2026