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

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

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

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

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

Автоматизация процесса удаления избавит от необходимости делать это вручную через админку или phpMyAdmin.

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

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

Шаг 1. Создаем функцию удаления старых комментариев

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

function wpmentor_delete_old_comments() {
    global $wpdb;
    // Удаляем комментарии старше 180 дней
    $days = 180;
    $date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));

    $comments_to_delete = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} WHERE comment_date < %s",
        $date_threshold
    ));

    if (!empty($comments_to_delete)) {
        foreach ($comments_to_delete as $comment_id) {
            wp_delete_comment($comment_id, true); // true — удаляет без возможности восстановления
        }
    }
}

Эта функция получает ID всех комментариев старше 180 дней и удаляет их полностью.

Шаг 2. Регистрируем крон-задачу

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

function wpmentor_schedule_comment_cleanup() {
    if (!wp_next_scheduled('wpmentor_daily_comment_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wpmentor_daily_comment_cleanup');
    }
}
add_action('wp', 'wpmentor_schedule_comment_cleanup');

add_action('wpmentor_daily_comment_cleanup', 'wpmentor_delete_old_comments');

Этот код проверяет, запланирована ли уже задача, и если нет — создает ежедневное событие, которое вызывает функцию удаления.

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

Значение $days можно легко изменить под свои нужды. Например, для удаления комментариев старше года поставьте 365. Также можно добавить исключения, например, не удалять комментарии от определенных пользователей или с определенным статусом.

Пример исключения комментариев с пометкой "важные"

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

    $comments_to_delete = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM {$wpdb->comments} 
         WHERE comment_date < %s AND comment_approved = 1 AND comment_content NOT LIKE %s",
        $date_threshold,
        '%[важно]%'
    ));

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

Этот код не удалит комментарии, в которых содержится метка [важно] в тексте.

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

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

  • Delete Old Comments — простой плагин для массового удаления старых комментариев по дате;
  • WP Bulk Delete — мощный плагин для массового удаления постов, комментариев, пользователей с множеством фильтров и расписаний (подробнее на wpshop.ru);
  • Clearfy Pro — оптимизационный плагин с функцией очистки базы, включая удаление старых комментариев и ревизий (подробнее на wpshop.ru).

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

Советы по безопасности и резервному копированию

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

Также рекомендуется тестировать код и плагины на тестовом сайте перед внедрением на боевой проект.

Итог

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

Как автоматизировать удаление старого кеша в WordPress
27.01.2026
Как использовать метаданные в WordPress для улучшения поисковой оптимизации
21.12.2025
Как удалить версии записей в WordPress для оптимизации базы данных
18.11.2025
Автоматическое удаление неактивных пользователей в WordPress
24.02.2026
WooCommerce: автоматическое удаление закрытых заказов с помощью WP-Cron
23.05.2026