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

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

В WooCommerce отзывы играют важную роль для повышения доверия к товарам и увеличения конверсии. Однако не все покупатели оставляют отзывы вручную. Автоматическое создание черновиков отзывов после успешного заказа позволяет привлечь внимание клиентов и упростить процесс написания отзыва — достаточно открыть уже созданный черновик и дополнить его.

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

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

1. Используем хук WooCommerce для отслеживания смены статуса заказа

Хук woocommerce_order_status_completed срабатывает, когда заказ переводится в статус «завершён». В этот момент удобнее всего создать черновик отзыва.

add_action('woocommerce_order_status_completed', 'auto_create_review_after_order', 10, 1);
function auto_create_review_after_order($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    if (!$order) return;

    foreach ($order->get_items() as $item) {
        $product_id = $item->get_product_id();
        // Проверяем, существует ли уже отзыв от этого пользователя для товара
        $user_id = $order->get_user_id();
        if (user_has_reviewed_product($user_id, $product_id)) continue;

        // Создаем черновик отзыва
        $commentdata = array(
            'comment_post_ID' => $product_id,
            'comment_author' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
            'comment_author_email' => $order->get_billing_email(),
            'comment_content' => '', // Пустой черновик
            'comment_type' => 'review',
            'comment_approved' => '0', // Черновик — не опубликован
            'user_id' => $user_id,
        );
        wp_insert_comment($commentdata);
    }
}

function user_has_reviewed_product($user_id, $product_id) {
    if (!$user_id) return false;
    $args = array(
        'post_id' => $product_id,
        'user_id' => $user_id,
        'count' => true,
        'type' => 'review',
        'status' => 'approve',
    );
    $count = get_comments($args);
    return $count > 0;
}

2. Проверка существующих отзывов пользователя по товару

Функция user_has_reviewed_product предотвращает создание дубликатов отзывов для одного и того же пользователя и товара.

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

  • Оформите тестовый заказ и переведите его в статус «Завершён».
  • В админке WordPress откройте раздел Отзывы — должен появиться новый черновик отзыва с пустым содержанием.
  • Проверьте, что для каждого товара из заказа создался отдельный черновик, если отзыв ранее не оставлялся.
  • Отзывы не должны публиковаться автоматически — только черновики.

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

  • Отзывы создаются с пустым автором или email. Убедитесь, что в заказе заполнены поля billing_first_name, billing_last_name и billing_email. Если магазин принимает заказы без регистрации — можно добавить проверки и подставлять значения по умолчанию.
  • Отзывы публикуются сразу. Проверьте, что поле comment_approved установлено в '0', а не '1'.
  • Отзывы не создаются для вариативных товаров. Используйте $item->get_product_id(), а не $item->get_variation_id(), если хотите создавать отзывы по основному товару.
  • Повторяющиеся отзывы от одного пользователя. Убедитесь, что функция проверки user_has_reviewed_product корректно работает и фильтрует по статусу approve.

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

  • Ограничьте количество создаваемых черновиков, чтобы не забивать базу. Например, добавьте проверку, что отзыв создаётся не чаще одного раза на определённый период.
  • Используйте транзиенты или кэш для проверки существующих отзывов, если много заказов — так снизите нагрузку на базу данных.
  • Защищайте поля отзывов от XSS и других уязвимостей при дальнейшем редактировании пользователями.
  • Регулярно очищайте старые неактивные черновики, чтобы база не разрасталась.

Сравнение подходов: плагин vs. код vs. компромисс

МетодПлюсыМинусы
Плагин (например, Customer Reviews for WooCommerce)Простота установки, готовые настройки, поддержкаДополнительная нагрузка, возможные конфликты, ограниченная кастомизация
Код (как в статье)Минимальная нагрузка, полный контроль, кастомизацияТребует навыков, нет интерфейса, нужно поддерживать
Компромисс: готовый плагин + доп. кодБыстрый старт с возможностью доработокСложнее отлаживать, возможны конфликты
Автоматическое обновление плагинов и тем в WordPress без риска
28.12.2025
WooCommerce: как автоматически удалять отменённые заказы и товары из них
28.04.2026
WordPress: как удалить ненужные мета данные из head без плагинов
15.12.2025
Как избежать конфликтов между плагинами в WordPress: практические советы и примеры кода
09.03.2026
Как удалить постоянные редиректы в WordPress: практическое руководство
26.03.2026

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.