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

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

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

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

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

Рассмотрим, как настроить такую автоматизацию.

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

Плагин Clearfy Pro: очистка базы от спама и оптимизация

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

Чтобы настроить Clearfy Pro, сделайте следующее:

  1. Установите и активируйте плагин Clearfy Pro.
  2. Перейдите в раздел «Оптимизация» и включите опцию автоматической очистки спама.
  3. Настройте расписание очистки — например, раз в сутки или неделю.
  4. Сохраните настройки и проверьте результаты через несколько дней.

Clearfy Pro хорошо подходит для тех, кто хочет получить комплексное решение по оптимизации без программирования.

Akismet Anti-Spam: фильтрация и удаление спама

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

Для автоматического удаления спама с Akismet можно использовать дополнительный плагин Akismet Cleanup или настроить WP-Cron с пользовательским кодом, который мы рассмотрим ниже.

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

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

Ниже пример функции wpgen_delete_spam_comments, которая удаляет все спам-комментарии:

function wpgen_delete_spam_comments() {
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
}

// Планируем событие при активации темы
function wpgen_schedule_spam_cleanup() {
    if (!wp_next_scheduled('wpgen_daily_spam_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wpgen_daily_spam_cleanup');
    }
}
add_action('wp', 'wpgen_schedule_spam_cleanup');

// Привязываем функцию к событию
add_action('wpgen_daily_spam_cleanup', 'wpgen_delete_spam_comments');

Этот код удалит все комментарии в статусе спам один раз в сутки. Если хотите изменить частоту, вместо 'daily' можно использовать 'hourly' или создать собственный интервал.

Создание пользовательского интервала WP-Cron

Чтобы добавить новый интервал, например, раз в 6 часов, добавьте в functions.php:

function wpgen_custom_cron_schedules($schedules) {
    $schedules['six_hours'] = array(
        'interval' => 6 * 3600,
        'display'  => 'Каждые 6 часов'
    );
    return $schedules;
}
add_filter('cron_schedules', 'wpgen_custom_cron_schedules');

Далее замените 'daily' на 'six_hours' в функции wpgen_schedule_spam_cleanup.

Улучшение очистки: удаление спама старше определённого времени

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

Вот пример функции, удаляющей спам старше 7 дней:

function wpgen_delete_old_spam_comments() {
    global $wpdb;
    $wpdb->query(
        $wpdb->prepare(
            "DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_date < %s",
            date('Y-m-d H:i:s', strtotime('-7 days'))
        )
    );
}

Замените вызов wpgen_delete_spam_comments на wpgen_delete_old_spam_comments в вашем крон-событии для более щадящего удаления.

Резюме по безопасности и производительности

При работе с автоматическим удалением спама стоит учитывать несколько моментов:

  • Всегда делайте резервные копии базы перед внедрением автоматических скриптов удаления.
  • Проверяйте логи сервера и WordPress на предмет ошибок после запуска скриптов.
  • Если используете WP-Cron, помните, что он запускается при посещении сайта, поэтому на малых трафиках задачи могут выполняться с задержкой.
  • Для сайтов с большим количеством комментариев рассмотрите использование системных cron-задач сервера для запуска wp-cron.php по расписанию.

Также можно комбинировать кодовые решения с плагинами, например Clearfy Pro, чтобы получить удобный интерфейс и дополнительные возможности оптимизации.

Дополнительные рекомендации и плагины

Кроме Clearfy Pro и Akismet, есть другие полезные инструменты для борьбы со спамом:

  • Antispam Bee — бесплатный и эффективный плагин без регистрации API.
  • WP-SpamShield — комплексная защита от спама для комментариев и форм.

Для интеграции с плагинами типа Expert Review или Quizle на вашем сайте WPShop.ru можно дополнительно настроить автоматическую очистку данных и комментариев, что повысит удобство использования и качество контента.

Как создать настройки плагина WordPress на основе Customizer
11.04.2026
Как создать динамические виджеты в WordPress с поддержкой AJAX
13.03.2026
Руководство по созданию пользовательских типов записей в WordPress
19.11.2025
Как добавить дополнительное поле в REST API WordPress для пользователя
04.02.2026
Как использовать хук woocommerce_cart_calculate_fees для добавления дополнительных платежей в WooCommerce
10.05.2026