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

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

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

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

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

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

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

Самый простой и надежный способ — использовать планировщик WordPress WP-Cron для регулярного удаления старых отзывов. Ниже приведен пошаговый пример реализации.

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

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

function wponline_delete_old_reviews() {
    global $wpdb;
    // Удаляем отзывы старше 180 дней
    $days = 180;
    $date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

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

    if ($deleted !== false) {
        error_log("wponline_delete_old_reviews: удалено отзывов - " . $deleted);
    }
}

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

Шаг 2. Создаем событие WP-Cron для регулярного запуска

Добавьте регистрацию события в functions.php:

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

add_action('wponline_daily_delete_old_reviews', 'wponline_delete_old_reviews');

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

Шаг 3. Очистка при деактивации плагина или темы

Если вы добавили код в плагин, не забудьте отменить расписание при деактивации:

function wponline_deactivate_cleanup() {
    wp_clear_scheduled_hook('wponline_daily_delete_old_reviews');
}
register_deactivation_hook(__FILE__, 'wponline_deactivate_cleanup');

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

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

  • Clearfy Pro — плагин оптимизации WordPress, который среди прочих функций позволяет удалять устаревшие комментарии и отзывы автоматически. Подробнее на wpshop.ru.
  • WP Bulk Delete — бесплатный плагин для массового удаления записей, комментариев, пользователей с гибкими условиями фильтрации.
  • Advanced Comment Moderation — плагин с расширенными возможностями фильтрации и управления комментариями.

Такие инструменты позволяют автоматизировать процесс без необходимости писать собственный код.

Практические советы по безопасности и тестированию

При работе с удалением данных важно соблюдать осторожность:

  • Резервное копирование. Перед внедрением автоматического удаления обязательно создавайте резервные копии базы данных.
  • Тестирование на тестовой среде. Пробуйте код и настройки сначала на локальном сервере или копии сайта, чтобы избежать потери важных данных.
  • Логирование. Добавляйте логирование удалений (как в примере с error_log), чтобы отслеживать работу автоматизации.

Расширение функционала: удаление отзывов с определенными метками

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

Для этого можно использовать мета-поля комментариев и модифицировать функцию удаления:

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

    // Удаляем отзывы старше 180 дней и с меткой 'spam_flagged'
    $comment_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments
        JOIN $wpdb->commentmeta ON $wpdb->comments.comment_ID = $wpdb->commentmeta.comment_id
        WHERE comment_date < %s AND meta_key = 'spam_flagged' AND meta_value = '1'",
        $date
    ));

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

Этот подход позволяет гибко настраивать фильтрацию удаляемых отзывов.

Заключение

Автоматическое удаление старых отзывов в WordPress — важный инструмент для поддержания производительности и качества сайта. Реализовать его можно как самостоятельно через WP-Cron и SQL-запросы, так и с помощью специализированных плагинов, например Clearfy Pro. Не забывайте про тестирование и резервное копирование перед внедрением.

Как автоматически удалять пустые термины в WordPress
16.03.2026
Запрет на роботы в WordPress: как запретить индексацию ответов и комментариев
27.01.2026
Как установить и настроить подключение к внешней базе данных в WordPress
20.04.2026
WooCommerce: как автоматически удалять товары по статусу и дате
20.05.2026
Как использовать MetaBox для создания собственных пользовательских полей в WordPress
05.04.2026