Автоматическое удаление отзывов в WooCommerce после их модерации

Проблема: необходимость автоматического удаления одобренных отзывов

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

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

Для начала уточним, какие именно отзывы нужно удалять автоматически. Обычно отзывы — это комментарии с типом comment_type = 'review' или просто comment_type = '' (если не используется кастомизация). В WooCommerce отзывы — комментарии к товарам с рейтингом.

Удалять отзывы сразу после публикации или после одобрения? В WordPress отзывы проходят модерацию, и статус меняется с hold (ожидает) на approve (одобрен). Можно отследить этот момент и запустить удаление.

Пошаговое решение: код для автоматического удаления отзывов после модерации

Используем хук transition_comment_status, который срабатывает при смене статуса комментария:

function wps_delete_review_after_approval($new_status, $old_status, $comment) {
    // Проверяем, что комментарий — отзыв к товару
    if ('approve' === $new_status && 'hold' === $old_status) {
        // Проверяем, что это отзыв к товару WooCommerce
        if ('review' === $comment->comment_type || ($comment->comment_post_ID && 'product' === get_post_type($comment->comment_post_ID))) {
            // Удаляем отзыв без возможности восстановления
            wp_delete_comment($comment->comment_ID, true);
        }
    }
}
add_action('transition_comment_status', 'wps_delete_review_after_approval', 10, 3);

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

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

Если нужно удалять отзывы, например, только с 1-2 звёздами, добавим проверку рейтинга (рейтинг хранится в мета-комментарии rating):

function wps_delete_low_rating_review($new_status, $old_status, $comment) {
    if ('approve' === $new_status && 'hold' === $old_status) {
        if ('review' === $comment->comment_type || ($comment->comment_post_ID && 'product' === get_post_type($comment->comment_post_ID))) {
            $rating = intval(get_comment_meta($comment->comment_ID, 'rating', true));
            if ($rating > 0 && $rating <= 2) { // Удаляем отзывы с рейтингом 1 или 2
                wp_delete_comment($comment->comment_ID, true);
            }
        }
    }
}
add_action('transition_comment_status', 'wps_delete_low_rating_review', 10, 3);

Проверка результата после внедрения

1. Добавьте в WooCommerce новый отзыв для товара, поставьте статус «ожидает модерации» (обычно комментарий создаётся в статусе hold).

2. В панели администратора WordPress одобрите этот отзыв.

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

4. Проверьте таблицу базы данных wp_comments — комментарий должен быть удалён (если параметр удаления принудительный — wp_delete_comment(..., true)).

Частые ошибки и как исправить

  • Отзывы не удаляются после одобрения
    Проверьте, что хук transition_comment_status корректно подключён и функция вызывается. Отладьте с помощью error_log или var_dump.
  • Удаляются не все нужные отзывы
    Убедитесь, что проверка типа комментария и поста правильна. WooCommerce хранит отзывы как обычные комментарии с типом review или пустым типом, но относится к product постам.
  • Отзывы удаляются, но остаются в базе (непринудительно)
    Используйте второй аргумент true в wp_delete_comment($comment_id, true) для полного удаления, иначе комментарий просто помечается как удалённый.
  • Проблемы совместимости с кешированием
    Если отзывы отображаются после удаления, очистите кеш сайта или плагинов кеширования.

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

  • Не используйте автоматическое удаление отзывов без чёткой бизнес-логики — это может негативно повлиять на SEO и доверие клиентов.
  • Для массовых операций с отзывами лучше запускать скрипты по cron, а не делать удаление на каждый одобряемый отзыв, чтобы снизить нагрузку.
  • Всегда тестируйте изменения на тестовой среде, чтобы избежать случайной потери данных.
  • Если используете плагин Clearfy Pro от WPShop, можно дополнительно оптимизировать работу с комментариями и отзывами, например, убрать дубли или кешировать их.

Сравнение вариантов удаления отзывов

МетодОписаниеПлюсыМинусы
Удаление сразу после одобрения (хук)Код на transition_comment_status, удаление сразуАвтоматизация, простотаРиск случайного удаления нужных отзывов
Массовое удаление через WP-CLIКоманды для выборочного удаления комментариевКонтроль, можно запускать по расписаниюТребует доступа к серверу и навыков
Удаление вручную через админкуАдминка WordPress — массовые действияПростота, безопасностьРучной труд, не автоматизировано
Добавление поддержки масштабирования изображений в WordPress
23.02.2026
Оптимизация загрузки картинок в WordPress с помощью Lazy Load
15.01.2026
Как использовать WP-Cron для автоматизации задач в WordPress
07.12.2025
WooCommerce: как автоматически удалять товары после продажи
15.05.2026
Как вывести список авторских постов в WordPress с фильтрацией по автору и категории
11.04.2026