Как создать автоматическую систему отзывов с подтверждением в WordPress

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

Почему нужна система подтверждения отзывов

Обычные формы отзывов часто приводят к появлению спам-сообщений и фейковых отзывов, которые портят репутацию сайта и снижают конверсию. Подтверждение отзывов позволяет:

  • Убедиться, что отзыв оставлен реальным пользователем;
  • Отсечь спам и ботов;
  • Модерировать отзывы перед публикацией;
  • Автоматизировать процесс сбора и публикации отзывов.

Для реализации такой системы можно использовать плагины и кастомный код с применением WordPress REST API и AJAX, чтобы сделать процесс удобным и быстрым.

Выбор плагина для отзывов с подтверждением

На рынке есть несколько полезных плагинов, которые можно использовать как основу:

  • Expert Review — мощный плагин для управления отзывами с расширенными возможностями модерации и подтверждения;
  • WPForms — с помощью дополнений можно создать форму отзывов с подтверждением по e-mail;
  • WP Customer Reviews — простой плагин с модерацией и антиспам фильтрами.

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

Создание формы отзывов с подтверждением по e-mail на примере кода

Рассмотрим пример, как создать форму отзывов, которая отправляет подтверждение на e-mail пользователя перед публикацией отзыва.

Шаг 1. Создаём форму в шаблоне

<form id="wpcommunity_review_form" method="post">
  <label for="review_name">Ваше имя:</label>
  <input type="text" id="review_name" name="review_name" required />

  <label for="review_email">Ваш e-mail:</label>
  <input type="email" id="review_email" name="review_email" required />

  <label for="review_text">Отзыв:</label>
  <textarea id="review_text" name="review_text" required></textarea>

  <input type="hidden" name="review_nonce" value="<?php echo wp_create_nonce('wpcommunity_review_nonce'); ?>" />
  <button type="submit">Отправить отзыв</button>
</form>
<div id="wpcommunity_review_message"></div>

Шаг 2. Обработка данных и отправка письма с подтверждением

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

add_action('wp_ajax_wpcommunity_submit_review', 'wpcommunity_submit_review');
add_action('wp_ajax_nopriv_wpcommunity_submit_review', 'wpcommunity_submit_review');

function wpcommunity_submit_review() {
    check_ajax_referer('wpcommunity_review_nonce', 'security');

    $name = sanitize_text_field($_POST['review_name']);
    $email = sanitize_email($_POST['review_email']);
    $text = sanitize_textarea_field($_POST['review_text']);

    if (empty($name) || empty($email) || empty($text)) {
        wp_send_json_error('Все поля обязательны для заполнения.');
    }

    // Создаём отзыв как временный пост с типом 'pending'
    $review_id = wp_insert_post([
        'post_type' => 'review',
        'post_title' => 'Отзыв от ' . $name,
        'post_content' => $text,
        'post_status' => 'pending',
        'meta_input' => [
            'review_author_email' => $email
        ]
    ]);

    if (!$review_id) {
        wp_send_json_error('Ошибка при сохранении отзыва.');
    }

    // Генерируем уникальный ключ подтверждения
    $key = wp_generate_password(20, false);
    update_post_meta($review_id, 'confirmation_key', $key);

    // Отправляем письмо с подтверждением
    $confirm_link = add_query_arg([
        'review_id' => $review_id,
        'key' => $key
    ], site_url('/confirm-review/'));

    $subject = 'Подтвердите ваш отзыв на сайте ' . get_bloginfo('name');
    $message = "Здравствуйте, $name!\n\nПожалуйста, подтвердите ваш отзыв, перейдя по ссылке: $confirm_link";

    wp_mail($email, $subject, $message);

    wp_send_json_success('Письмо с подтверждением отправлено на ваш e-mail.');
}

Шаг 3. Создание страницы подтверждения и логика активации отзыва

Создайте страницу с ярлыком confirm-review и добавьте следующий код в functions.php или плагин:

add_action('template_redirect', function() {
    if (is_page('confirm-review')) {
        $review_id = intval($_GET['review_id'] ?? 0);
        $key = $_GET['key'] ?? '';

        if (!$review_id || !$key) {
            wp_die('Неверная ссылка подтверждения.');
        }

        $saved_key = get_post_meta($review_id, 'confirmation_key', true);

        if ($key === $saved_key) {
            // Публикуем отзыв
            wp_update_post([
                'ID' => $review_id,
                'post_status' => 'publish'
            ]);

            // Удаляем ключ подтверждения
            delete_post_meta($review_id, 'confirmation_key');

            echo '<h2>Спасибо! Ваш отзыв подтверждён и опубликован.</h2>';
        } else {
            wp_die('Неверный ключ подтверждения.');
        }

        exit;
    }
});

Реализация AJAX для отправки формы без перезагрузки страницы

Для удобства пользователей сделаем отправку формы отзывов через AJAX. Добавьте этот скрипт в шаблон или enqueue с локализацией:

jQuery(document).ready(function($) {
    $('#wpcommunity_review_form').on('submit', function(e) {
        e.preventDefault();
        var data = {
            action: 'wpcommunity_submit_review',
            security: $('input[name="review_nonce"]').val(),
            review_name: $('#review_name').val(),
            review_email: $('#review_email').val(),
            review_text: $('#review_text').val()
        };

        $.post(ajaxurl, data, function(response) {
            if (response.success) {
                $('#wpcommunity_review_message').html('<p style="color:green">' + response.data + '</p>');
                $('#wpcommunity_review_form')[0].reset();
            } else {
                $('#wpcommunity_review_message').html('<p style="color:red">' + response.data + '</p>');
            }
        });
    });
});

Дополнительные советы по улучшению системы отзывов

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

  • Использовать reCAPTCHA или альтернативные антиспам решения, например, Clearfy Pro для защиты форм;
  • Добавить возможность администраторам просматривать и редактировать отзывы перед публикацией;
  • Показывать отзывы с помощью кастомного шаблона и пагинации, например, с помощью ABC Pagination;
  • Автоматизировать напоминания пользователям, если они не подтвердили отзыв в течение определённого времени;
  • Использовать пользовательские типы записей (post type) и метаданные для удобного управления отзывами.

Вывод

Автоматическая система отзывов с подтверждением — это не только способ повысить качество контента на сайте, но и инструмент для улучшения взаимодействия с пользователями. Используя стандартные инструменты WordPress, AJAX и REST API, а также проверенные плагины, вы сможете создать надёжную и удобную систему, которая будет работать на ваш бизнес и репутацию.

Как автоматизировать очистку базы данных WordPress от пустых метаданных
23.03.2026
Как удалить проблемы с вариантами товаров в WooCommerce: практическое руководство
23.04.2026
Как создать автоматическую систему удаления нерабочих шорткодов в WordPress
08.03.2026
Как удалить варианты товаров WooCommerce при удалении атрибута
26.04.2026
Удаление пустых записей в termmeta WordPress: оптимизация базы данных
09.12.2025

Задать вопрос о вордпресс, получить ответ - это все можно сделать в нашем сообществе WP. Сайт в данный момент в разработке, изучите ссылки ниже: