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

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

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

Ручное управление отзывами становится непрактичным при большом объёме контента. Автоматизация позволяет:

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

Для реализации таких сценариев можно использовать встроенные возможности WordPress, WP-Cron и плагины, а также собственные функции с фильтрами и хуками.

Основные способы автоматического удаления отзывов в WordPress

1. Использование WP-Cron для удаления по дате

WP-Cron позволяет запускать задачи по расписанию. Например, мы можем настроить удаление отзывов старше 1 года.

function wpbe_delete_old_reviews() {
    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));
    $reviews = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_type = 'review' AND comment_date < %s",
        $date_threshold
    ));
    foreach ($reviews as $review_id) {
        wp_delete_comment($review_id, true);
    }
}

function wpbe_setup_cron_job() {
    if (!wp_next_scheduled('wpbe_daily_delete_old_reviews')) {
        wp_schedule_event(time(), 'daily', 'wpbe_daily_delete_old_reviews');
    }
}
add_action('wp', 'wpbe_setup_cron_job');
add_action('wpbe_daily_delete_old_reviews', 'wpbe_delete_old_reviews');

Этот код создаёт ежедневное задание, которое удаляет отзывы старше года. Важно, что comment_type = 'review' — условие для отзывов, если они выделены в вашем сайте отдельным типом комментариев.

2. Удаление отзывов с низкой оценкой

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

function wpbe_delete_low_rating_reviews() {
    global $wpdb;
    $threshold = 2; // минимальная оценка
    $review_ids = $wpdb->get_col(
        "SELECT comment_ID FROM $wpdb->comments c
        JOIN $wpdb->commentmeta m ON c.comment_ID = m.comment_id
        WHERE c.comment_type = 'review' AND m.meta_key = 'review_rating' AND m.meta_value < $threshold"
    );
    foreach ($review_ids as $id) {
        wp_delete_comment($id, true);
    }
}
add_action('wpbe_daily_delete_low_rating_reviews', 'wpbe_delete_low_rating_reviews');

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

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

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

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

  • Clearfy Pro — плагин для оптимизации WordPress, включает функции очистки базы данных и удаления старых комментариев с фильтрами. Подробнее на wpshop.ru.
  • Expert Review — плагин для отзывов с рейтингами, позволяет настроить автоматическую модерацию и удаление по различным параметрам.

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

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

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

  • Проверьте наличие запланированных задач в разделе wp-cron (можно использовать плагин WP Crontrol).
  • Добавьте логирование операций удаления — например, записывайте ID удалённых отзывов в файл журнала.
  • Тестируйте работу на тестовом сайте с копией базы.

Пример добавления логирования:

function wpbe_delete_old_reviews() {
    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));
    $reviews = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_ID FROM $wpdb->comments WHERE comment_type = 'review' AND comment_date < %s",
        $date_threshold
    ));
    foreach ($reviews as $review_id) {
        wp_delete_comment($review_id, true);
        error_log("[WPBE] Deleted review ID: $review_id");
    }
}

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

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

  • Делайте резервные копии базы данных перед внедрением автоматизации.
  • Не удаляйте отзывы без проверки — можно добавить дополнительные условия или ручной контроль.
  • Оптимизируйте запросы, особенно если база большая, чтобы избежать нагрузок.
  • Используйте транзакции и проверяйте права доступа, если пишете кастомные решения.

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

Выводы и практические советы

Автоматическое удаление отзывов в WordPress — эффективный способ поддерживать качество и актуальность пользовательского контента. Выбор метода зависит от специфики сайта и технических навыков:

  • Для простых условий подойдёт WP-Cron с собственными функциями.
  • Если отзывы имеют рейтинг или другие метаданные — используйте их для точной фильтрации.
  • Для комплексных решений и удобства лучше использовать проверенные плагины, например, Clearfy Pro или Expert Review.

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

Как избежать конфликтов плагинов в WordPress: практические советы и примеры кода
07.04.2026
WooCommerce: автоматическое обновление статуса заказа по срокам
12.06.2026
Как удалить или изменить slug записи WordPress без потери SEO
05.01.2026
Автоматическое удаление старых записей через WP-Cron в WordPress
13.12.2025
Автоматическое удаление возврашённых и отменённых заказов WooCommerce по сроку
20.05.2026