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

|

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

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

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

Автоматизация позволяет:

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

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

1. Akismet Anti-Spam

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

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

function wpreboot_auto_delete_akismet_spam() {
    global $wpdb;
    $spam_comments = $wpdb->get_col("SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = 'spam'");
    foreach ($spam_comments as $comment_id) {
        wp_delete_comment($comment_id, true);
    }
}
add_action('wp_scheduled_delete', 'wpreboot_auto_delete_akismet_spam');

Этот код удаляет все помеченные Akismet комментарии со статусом «spam» при запуске стандартного события WordPress wp_scheduled_delete, которое по умолчанию срабатывает раз в сутки.

2. WP SpamShield Anti-Spam

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

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

Создаем собственный плагин для автоматического удаления спам-комментариев

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

Вот пример минимального плагина:

<?php
/**
 * Plugin Name: WPReboot Auto Spam Cleaner
 * Description: Автоматическое удаление спам и мусорных комментариев.
 * Version: 1.0
 * Author: WPReboot
 */

function wpreboot_auto_delete_spam_comments() {
    $args = [
        'status' => ['spam', 'trash'],
        'number' => 100, // за раз удаляем до 100 комментариев
    ];
    $comments = get_comments($args);
    foreach ($comments as $comment) {
        wp_delete_comment($comment->comment_ID, true);
    }
}

if (!wp_next_scheduled('wpreboot_daily_spam_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpreboot_daily_spam_cleanup');
}

add_action('wpreboot_daily_spam_cleanup', 'wpreboot_auto_delete_spam_comments');
?>

Этот плагин создает задачу, которая ежедневно удаляет до 100 комментариев со статусом spam или trash. Таким образом, база данных очищается регулярно без вашего вмешательства.

Оптимизация работы с комментариями и база данных

Использование плагина Clearfy Pro для улучшения производительности

Плагин Clearfy Pro позволяет не только оптимизировать базу данных, но и улучшить систему комментариев. В числе доступных функций — регулярная очистка спам-комментариев, отключение ревизий, удаление временных данных и многое другое.

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

Дополнительные советы по снижению количества спама

Пример функции для фильтрации комментариев по ключевым словам

Иногда полезно автоматически помечать комментарии как спам, если в них встречаются определенные слова. Вот пример пользовательской функции для фильтрации:

function wpreboot_filter_comment_by_keywords( $approved , $commentdata ) {
    $spam_words = ['http://', 'https://', 'viagra', 'casino'];
    foreach ($spam_words as $word) {
        if (stripos($commentdata['comment_content'], $word) !== false) {
            return 'spam';
        }
    }
    return $approved;
}
add_filter('pre_comment_approved', 'wpreboot_filter_comment_by_keywords', 99, 2);

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

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

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

Также не забывайте о профилактике: настройте капчу, фильтры и модерацию, чтобы минимизировать количество спама изначально.

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

Как создать динамические таблицы в WordPress с помощью шорткодов
26.02.2026
Как избежать проблем с перенаправлением после смены домена WordPress
17.01.2026
WooCommerce: автоматическое удаление просмотренных товаров из корзины
30.04.2026
Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы
05.12.2025
Как добавить дополнительный тип записей (Custom Post Type) в WordPress без плагинов
19.02.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше