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

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

В интернет-магазинах на WooCommerce часто появляются отзывы с пустым текстом. Это могут быть спам-боты, ошибочные или неполные комментарии клиентов. Такие отзывы ухудшают восприятие сайта, влияют на SEO и создают лишнюю нагрузку на базу данных.

Чтобы проверить наличие пустых отзывов, выполните SQL-запрос напрямую в базе данных с помощью phpMyAdmin или аналогичного инструмента:

SELECT comment_ID, comment_post_ID, comment_author, comment_date FROM wp_comments WHERE comment_post_ID IN (SELECT ID FROM wp_posts WHERE post_type = 'product') AND comment_approved = '1' AND (comment_content = '' OR comment_content IS NULL);

Этот запрос вернёт все одобренные отзывы к товарам WooCommerce, в которых отсутствует текст.

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

1. Создание функции для удаления пустых отзывов

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

function wpguest_delete_empty_product_reviews() {
    global $wpdb;
    $product_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'product'");
    if ( ! empty( $product_ids ) ) {
        $placeholders = implode( ',', array_fill( 0, count( $product_ids ), '%d' ) );
        $query = $wpdb->prepare(
            "DELETE FROM {$wpdb->comments} WHERE comment_post_ID IN ($placeholders) AND comment_approved = '1' AND (comment_content = '' OR comment_content IS NULL)",
            ...$product_ids
        );
        $deleted = $wpdb->query( $query );
        return $deleted;
    }
    return 0;
}

2. Запуск функции вручную или через WP-CLI

Для однократного запуска вызовите функцию в functions.php или используйте WP-CLI:

wp eval 'echo wpguest_delete_empty_product_reviews();'

Вы увидите количество удалённых отзывов.

3. Автоматизация через WP-Cron

Чтобы удалять пустые отзывы регулярно, добавьте планировщик:

add_action('wpguest_daily_cleanup', 'wpguest_delete_empty_product_reviews');

if ( ! wp_next_scheduled( 'wpguest_daily_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpguest_daily_cleanup' );
}

Этот код добавит ежедневное задание на очистку пустых отзывов.

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

  • Запустите SQL-запрос из раздела диагностики - пустых отзывов быть не должно.
  • Проверьте раздел "Отзывы" в админке WooCommerce - пустые записи должны исчезнуть.
  • Для WP-Cron проверьте активные задачи командой wp cron event list или плагином WP Crontrol.

Частые ошибки при удалении пустых отзывов и как их исправить

  • Ошибка доступа к базе данных: убедитесь, что в wp-config.php корректные данные подключения и права пользователя БД позволяют удалять записи.
  • Удаление не происходит: проверьте, правильно ли подставляются ID товаров в запрос. Для больших магазинов используйте пакетную обработку, чтобы избежать превышения лимитов памяти.
  • Отзывы с текстом тоже удаляются: проверьте условие comment_content = '' OR comment_content IS NULL не содержит лишних операторов.
  • Функция не запускается по расписанию: убедитесь, что на сайте посещают страницы, иначе WP-Cron не срабатывает. Для критичных задач используйте системный cron и WP-CLI.

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

  • Выполняйте резервное копирование базы данных перед массовым удалением отзывов.
  • Для больших магазинов разбивайте удаление на части, например, удалять отзывы пакетами по 100 штук.
  • Добавьте проверку nonce и права пользователя, если запускаете функцию через админку.
  • Используйте WP-Cron только для нересурсных задач, в противном случае настройте системный cron.

Сравнение способов удаления пустых отзывов

МетодПлюсыМинусы
Ручной SQL-запросБыстро, без кодаТребует доступа к БД, опасно без бэкапа
PHP-функция с WP-CronАвтоматизация, безопаснее, можно интегрировать в админкуЗависит от посещаемости сайта, может нагрузить сервер при больших объемах
WP-CLIМощный, подходит для больших сайтовТребует доступа к серверу, знание командной строки
Автоматизация обновления тем и удаление старых ревизий в WordPress
21.03.2026
Как автоматизировать изменение статусов заказов WooCommerce с помощью кода
03.06.2026
Автоматизация создания резервных копий WordPress без плагинов
06.12.2025
Как удалить пустые вариативные товары WooCommerce с помощью кода
30.05.2026
Как использовать автоматическое очищение кеша в WordPress без плагинов
21.02.2026