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

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

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

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

Пример критериев удаления:

  • Рейтинг ниже 2 звёзд
  • Отзыв содержит запрещённые слова
  • Отзыв старше 2 лет
  • Отзывы от пользователей без подтверждённой почты
  • Отзывы, помеченные как спам

Давайте рассмотрим, как реализовать удаление по этим критериям.

Как определить отзывы в базе WordPress

В WordPress отзывы обычно хранятся как комментарии (post_type = 'review' или обычные комментарии с определённым типом), или как записи пользовательских типов (custom post types). Чаще всего используются комментарии с мета-данными для рейтинга.

Если отзывы — это комментарии, то рейтинг обычно хранится в comment_meta с ключом, например, rating. Также есть поле comment_date для даты, и comment_approved для статуса (например, спам).

Если отзывы — это отдельный тип записей, тогда нужно проверять post_type и мета-поля.

Удаление отзывов с рейтингом ниже 2 звёзд

Вот пример функции, которая удаляет все отзывы с рейтингом ниже 2 (если отзывы — комментарии с мета-ключом 'rating'):

function wpweb_delete_low_rating_reviews() {
    global $wpdb;

    $rating_threshold = 2;

    // Получаем ID комментариев с рейтингом ниже порога
    $comment_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = %s AND meta_value < %d",
        'rating', $rating_threshold
    ));

    if (empty($comment_ids)) {
        return; // Нет отзывов для удаления
    }

    foreach ($comment_ids as $comment_id) {
        wp_delete_comment($comment_id, true); // Полное удаление
    }
}

Эту функцию можно запустить через WP-CLI, хуки или вручную в админке с помощью кастомного плагина.

Удаление отзывов, содержащих запрещённые слова

Спам или неуместные отзывы легко отфильтровать по ключевым словам. Ниже пример функции для удаления отзывов с текстом, содержащим слова из списка:

function wpweb_delete_reviews_by_bad_words() {
    global $wpdb;

    $bad_words = ['плохой', 'спам', 'некачественный']; // Добавьте свои слова
    $placeholders = implode(',', array_fill(0, count($bad_words), '%s'));

    $query = "SELECT comment_ID, comment_content FROM {$wpdb->comments} WHERE comment_approved = '1'";
    $comments = $wpdb->get_results($query);

    foreach ($comments as $comment) {
        foreach ($bad_words as $word) {
            if (mb_stripos($comment->comment_content, $word) !== false) {
                wp_delete_comment($comment->comment_ID, true);
                break;
            }
        }
    }
}

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

Удаление устаревших отзывов (старше 2 лет)

Часто требуется очистить старые отзывы, чтобы не загромождать базу:

function wpweb_delete_old_reviews() {
    global $wpdb;

    $date_threshold = date('Y-m-d H:i:s', strtotime('-2 years'));

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

    foreach ($old_comments as $comment_id) {
        wp_delete_comment($comment_id, true);
    }
}

Плагины для управления и фильтрации отзывов в WordPress

Для тех, кто не хочет писать код, есть несколько полезных плагинов:

  • WP Customer Reviews — удобный плагин для сбора и модерации отзывов с возможностью фильтрации.
  • Akismet — автоматическая фильтрация спама, полезна для автоматического удаления спам-отзывов.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpweb.ru&utm_medium=article&utm_campaign=kak-udalit-otzyvy-po-kriteriyam) — плагин для оптимизации WordPress с возможностью тонкой настройки комментариев и отзывов, включая массовое удаление.

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

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

Для запуска функций удаления можно использовать несколько способов:

Через WP-CLI

В консоли сервера можно написать команду для вызова нужной функции, например, через wp eval-file.

Через Cron-задания (wp_cron)

Добавьте функцию в планировщик WordPress для регулярной очистки:

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

add_action('wpweb_daily_review_cleanup', 'wpweb_delete_low_rating_reviews');
// Аналогично можно цеплять другие функции удаления

Ручной запуск в админке

Создайте отдельную страницу с кнопкой, которая вызывает нужную функцию, если не хотите пользоваться консолью.

Важные рекомендации и безопасность при удалении отзывов

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

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

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

Выводы и полезные ссылки

Удаление отзывов по критериям — реальная и частая задача для сайтов на WordPress с отзывами. Используя приведённые примеры кода, вы сможете автоматизировать процесс и поддерживать качество контента.

Рекомендуем посмотреть Clearfy Pro для расширенного контроля над комментариями и отзывами.

Как удалить пустые термины таксономии в WordPress для оптимизации базы данных
06.04.2026
Как изменить размер изображений в WordPress без плагинов
24.02.2026
Как удалить неиспользуемые виджеты в WordPress для оптимизации сайта
11.02.2026
Как удалить неиспользуемые загрузки в WordPress для оптимизации сайта
11.03.2026
Как удалить неиспользуемые термины таксономии в WordPress для оптимизации базы данных
11.01.2026