Как добавить автоматический отзыв на страницу товара WooCommerce с помощью AJAX

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

Почему автоматические отзывы полезны для WooCommerce

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

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

Общая схема решения автоматического добавления отзыва через AJAX

Для реализации нам потребуется:

  • Создать AJAX-обработчик в WordPress, который получит запрос и добавит отзыв к товару.
  • Сформировать отзыв с нужными данными — текст, рейтинг, автор и т.д.
  • Отправить AJAX-запрос с фронтенда при нужном событии (например, после оплаты или по кнопке).
  • Обновить блок с отзывами без перезагрузки страницы.

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

Создание AJAX-обработчика для добавления отзыва в WooCommerce

Добавим в файл functions.php вашей темы или в плагин следующий код:

add_action('wp_ajax_wpplugin_add_auto_review', 'wpplugin_add_auto_review_callback');
add_action('wp_ajax_nopriv_wpplugin_add_auto_review', 'wpplugin_add_auto_review_callback');

function wpplugin_add_auto_review_callback() {
    if (!isset($_POST['product_id']) || !isset($_POST['review_text'])) {
        wp_send_json_error('Отсутствуют необходимые параметры');
        wp_die();
    }

    $product_id = intval($_POST['product_id']);
    $review_text = sanitize_text_field($_POST['review_text']);
    $rating = isset($_POST['rating']) ? intval($_POST['rating']) : 5; // по умолчанию 5 звезд

    if ($rating < 1 || $rating > 5) {
        $rating = 5;
    }

    $commentdata = array(
        'comment_post_ID' => $product_id,
        'comment_author' => 'Автоматический отзыв',
        'comment_author_email' => '',
        'comment_content' => $review_text,
        'comment_type' => '',
        'comment_approved' => 1,
        'comment_meta' => array(
            'rating' => $rating,
        ),
    );

    $comment_id = wp_insert_comment($commentdata);

    if ($comment_id) {
        // Сохраняем рейтинг через мета
        update_comment_meta($comment_id, 'rating', $rating);
        wp_send_json_success('Отзыв добавлен успешно');
    } else {
        wp_send_json_error('Ошибка при добавлении отзыва');
    }
    wp_die();
}

Этот код добавляет обработчик AJAX с экшеном wpplugin_add_auto_review, который принимает ID товара, текст отзыва и рейтинг. Отзыв сразу публикуется.

Отправка AJAX-запроса с фронтенда и обновление отзывов

Теперь добавим JavaScript, который отправит запрос на сервер. Например, вставьте этот скрипт в footer.php или подключите отдельным файлом:

jQuery(document).ready(function($) {
    function wpplugin_send_auto_review(productId, reviewText, rating) {
        $.ajax({
            url: wpplugin_ajax_object.ajax_url,
            method: 'POST',
            data: {
                action: 'wpplugin_add_auto_review',
                product_id: productId,
                review_text: reviewText,
                rating: rating
            },
            success: function(response) {
                if (response.success) {
                    alert('Отзыв добавлен');
                    // Обновляем отзывы товара через AJAX
                    wpplugin_reload_reviews(productId);
                } else {
                    alert('Ошибка: ' + response.data);
                }
            },
            error: function() {
                alert('Ошибка при отправке запроса');
            }
        });
    }

    function wpplugin_reload_reviews(productId) {
        var reviewsContainer = $('.woocommerce-Reviews');
        if (!reviewsContainer.length) return;

        $.ajax({
            url: window.location.href,
            dataType: 'html',
            success: function(data) {
                var newReviews = $(data).find('.woocommerce-Reviews').html();
                if (newReviews) {
                    reviewsContainer.html(newReviews);
                }
            }
        });
    }

    // Пример вызова - автоматически после загрузки страницы
    var productId = $('.single-product').data('product-id') || null;
    if (productId) {
        wpplugin_send_auto_review(productId, 'Отличный товар, рекомендую!', 5);
    }
});

Для корректной работы AJAX в WordPress необходимо локализовать скрипт в PHP, чтобы передать ajax_url:

function wpplugin_enqueue_scripts() {
    wp_enqueue_script('wpplugin-auto-review', get_template_directory_uri() . '/js/auto-review.js', array('jquery'), null, true);
    wp_localize_script('wpplugin-auto-review', 'wpplugin_ajax_object', array(
        'ajax_url' => admin_url('admin-ajax.php'),
    ));
}
add_action('wp_enqueue_scripts', 'wpplugin_enqueue_scripts');

Советы по улучшению автоматических отзывов и безопасности

Автоматические отзывы могут негативно повлиять на репутацию, если использовать их без контроля. Вот рекомендации:

  • Добавляйте проверки: например, разрешайте добавлять только после подтверждённой оплаты.
  • Используйте nonce для защиты AJAX-запросов.
  • Разнообразьте тексты отзывов, чтобы они выглядели естественно.
  • Оповещайте администраторов о новых отзывах для модерации.
  • Можно интегрировать с плагином Clearfy Pro, который позволяет оптимизировать работу с комментариями и защиту сайта.

Пример добавления nonce для безопасности AJAX

Добавьте nonce при локализации скрипта:

wp_localize_script('wpplugin-auto-review', 'wpplugin_ajax_object', array(
    'ajax_url' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('wpplugin_auto_review_nonce'),
));

И проверяйте в обработчике:

if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'wpplugin_auto_review_nonce')) {
    wp_send_json_error('Неверный nonce');
    wp_die();
}

Заключение

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

Если хотите расширить возможности отзывов и улучшить защиту сайта, рекомендуем ознакомиться с плагином Clearfy Pro на WPShop.ru.

Как удалить неиспользуемые шорткоды в WordPress
19.12.2025
Как использовать функцию wp_enqueue_script для добавления собственных скриптов в WordPress
26.04.2026
Как использовать WooCommerce хуки для автоматизации задач
15.06.2026
Создать автозаполнение метаданных при загрузке файлов в WordPress
09.02.2026
Как удалить плагин из WordPress полностью без остаточных данных
17.11.2025