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

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

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

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

Удаление таких комментариев помогает:

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

Рассмотрим конкретные способы автоматизации процесса.

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

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

Пример кода для удаления комментариев старше 180 дней

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

function wpco_delete_old_comments() {
    global $wpdb;
    $days = 180; // удаляем комментарии старше 180 дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
    
    $comments = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_date < %s",
        $date_threshold
    ));
    
    if (!empty($comments)) {
        foreach ($comments as $comment_id) {
            wp_delete_comment($comment_id, true); // true — удаляет полностью
        }
    }
}

// Регистрация задачи
if (!wp_next_scheduled('wpco_daily_delete_old_comments')) {
    wp_schedule_event(time(), 'daily', 'wpco_daily_delete_old_comments');
}

// Хук на выполнение задачи
add_action('wpco_daily_delete_old_comments', 'wpco_delete_old_comments');

Этот код настроит ежедневную проверку и удаление комментариев старше 180 дней. Можно изменить количество дней в переменной $days.

Как проверить и удалить только одобренные комментарии

Если хотите удалять только одобренные комментарии, измените SQL-запрос:

"SELECT comment_ID FROM $wpdb->comments WHERE comment_date < %s AND comment_approved = 1"

Так вы не удалите комментарии, ожидающие модерации или помеченные как спам.

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

Если вы не хотите писать код, можно воспользоваться готовыми решениями:

  • Auto Delete Comments — позволяет настроить удаление комментариев по возрасту, статусу и другим параметрам.
  • WP Bulk Delete — мощный плагин для массового удаления записей, страниц, комментариев и пользовательских типов записей с гибкими фильтрами.

Например, WP Bulk Delete позволяет создать задачу по удалению комментариев старше 6 месяцев, с определённым статусом, от конкретных пользователей и так далее.

Скачать плагин WP Bulk Delete с сайта WPShop.ru.

Дополнительные фильтры для удаления комментариев

Удаление комментариев по статусу

В WordPress комментарии могут иметь следующие статусы:

  • 1 — одобренные;
  • 0 — ожидающие модерации;
  • spam — помеченные как спам;
  • trash — удалённые.

Можно фильтровать удаление, учитывая эти статусы, чтобы не потерять нужные комментарии.

Удаление комментариев от определённых пользователей

Если у вас есть подозрительные пользователи, можно удалять их комментарии по user_id. Например, расширим функцию:

function wpco_delete_old_comments_from_user($user_id) {
    global $wpdb;
    $days = 180;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $comments = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_date < %s AND user_id = %d",
        $date_threshold, $user_id
    ));

    if (!empty($comments)) {
        foreach ($comments as $comment_id) {
            wp_delete_comment($comment_id, true);
        }
    }
}
<

Вызывайте функцию с нужным ID пользователя.

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

Удаление большого количества комментариев может оставить «пустые» места в таблицах базы данных. Для поддержания производительности рекомендуется проводить оптимизацию таблиц.

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

Также можно оптимизировать таблицы вручную через phpMyAdmin или с помощью WP-CLI:

wp db optimize

Резюме и рекомендации

Автоматическое удаление старых комментариев — важный элемент поддержки здоровья сайта и базы данных. Главное — выбрать подходящий метод:

  • Для гибкой настройки и автоматизации — код с WP-Cron;
  • Для быстрого решения без программирования — плагины Auto Delete Comments или WP Bulk Delete;
  • Для комплексной оптимизации — Clearfy Pro.

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

Как отфильтровать записи по полям Advanced Custom Fields в WordPress
15.12.2025
Как отображать последних активных пользователей WordPress
25.01.2026
Как добавить поддержку JSON-LD в WordPress
19.01.2026
Добавление поддержки GraphQL в WordPress: практическое руководство с WP GraphQL
13.02.2026
Как автоматизировать удаление старого контента в WordPress
08.02.2026