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

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

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

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

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

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

  • WP Customer Reviews — позволяет собирать отзывы и вручную подтверждать или отклонять их. Есть возможность интеграции с формами и уведомлениями.
  • WooCommerce Verified Reviews — автоматически подтверждает отзывы только от покупателей, сделавших заказ в вашем магазине.
  • WPRemark — плагин из экосистемы WPShop, который поддерживает расширенные отзывы с кастомными полями и модерацией.

Если у вас магазин на WooCommerce, советуем обратить внимание на WooCommerce Verified Reviews — он позволяет автоматизировать подтверждение.

Создание собственной системы подтверждённых отзывов на WordPress

Если нужно больше контроля, можно сделать систему своими силами. Рассмотрим пример создания кастомного типа записи «Отзыв» с метаполем подтверждения и формой отправки отзывов с AJAX.

Регистрация кастомного типа записи и метаполя

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

function wpdesk_register_review_post_type() {
    $args = [
        'public' => true,
        'label'  => 'Отзывы',
        'supports' => ['title', 'editor', 'author'],
        'capability_type' => 'post',
    ];
    register_post_type('wpdesk_review', $args);
    
    // Добавляем метаполе подтверждения
    add_action('add_meta_boxes', function() {
        add_meta_box('wpdesk_review_confirm', 'Подтверждение отзыва', function($post) {
            $value = get_post_meta($post->ID, '_wpdesk_review_confirmed', true);
            ?>
            <label><input type="checkbox" name="wpdesk_review_confirmed" value="yes" <?php checked($value, 'yes'); ?>> Подтвердить отзыв</label>
            <?php
        }, 'wpdesk_review', 'side');
    });

    add_action('save_post_wpdesk_review', function($post_id) {
        if (isset($_POST['wpdesk_review_confirmed'])) {
            update_post_meta($post_id, '_wpdesk_review_confirmed', 'yes');
        } else {
            delete_post_meta($post_id, '_wpdesk_review_confirmed');
        }
    });
}
add_action('init', 'wpdesk_register_review_post_type');

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

Создание формы для отправки отзыва с AJAX

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

function wpdesk_enqueue_review_scripts() {
    wp_enqueue_script('wpdesk-review-ajax', get_template_directory_uri() . '/js/wpdesk-review-ajax.js', ['jquery'], null, true);
    wp_localize_script('wpdesk-review-ajax', 'wpdeskReviewAjax', [
        'ajaxurl' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpdesk_review_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'wpdesk_enqueue_review_scripts');

function wpdesk_handle_review_submission() {
    check_ajax_referer('wpdesk_review_nonce', 'nonce');
    $name = sanitize_text_field($_POST['name'] ?? '');
    $content = sanitize_textarea_field($_POST['content'] ?? '');
    if (empty($name) || empty($content)) {
        wp_send_json_error('Заполните все поля');
    }
    $post_id = wp_insert_post([
        'post_type' => 'wpdesk_review',
        'post_title' => 'Отзыв от ' . $name,
        'post_content' => $content,
        'post_status' => 'pending'
    ]);
    if ($post_id) {
        wp_send_json_success('Спасибо за отзыв! Он будет опубликован после проверки.');
    } else {
        wp_send_json_error('Ошибка при сохранении отзыва');
    }
}
add_action('wp_ajax_wpdesk_submit_review', 'wpdesk_handle_review_submission');
add_action('wp_ajax_nopriv_wpdesk_submit_review', 'wpdesk_handle_review_submission');

Также создайте файл wpdesk-review-ajax.js в папке вашей темы /js/ со следующим содержимым:

jQuery(document).ready(function($){
    $('#wpdesk-review-form').on('submit', function(e){
        e.preventDefault();
        var data = {
            action: 'wpdesk_submit_review',
            nonce: wpdeskReviewAjax.nonce,
            name: $('#wpdesk-review-name').val(),
            content: $('#wpdesk-review-content').val()
        };
        $.post(wpdeskReviewAjax.ajaxurl, data, function(response){
            if(response.success){
                alert(response.data);
                $('#wpdesk-review-form')[0].reset();
            } else {
                alert('Ошибка: ' + response.data);
            }
        });
    });
});

HTML-код формы для вставки в страницу или виджет

Добавьте этот код в нужном месте темы или в текстовом виджете:

<form id="wpdesk-review-form">
    <label for="wpdesk-review-name">Ваше имя:</label>
    <input type="text" id="wpdesk-review-name" name="name" required>

    <label for="wpdesk-review-content">Ваш отзыв:</label>
    <textarea id="wpdesk-review-content" name="content" required></textarea>

    <button type="submit">Отправить отзыв</button>
</form>

Вывод подтверждённых отзывов на сайте

Чтобы вывести только подтверждённые отзывы, используйте WP_Query с метазапросом:

$args = [
    'post_type' => 'wpdesk_review',
    'post_status' => 'publish',
    'meta_key' => '_wpdesk_review_confirmed',
    'meta_value' => 'yes',
    'posts_per_page' => 10
];
$query = new WP_Query($args);

if ($query->have_posts()) {
    echo '<ul class="wpdesk-reviews">';
    while ($query->have_posts()) {
        $query->the_post();
        echo '<li><strong>' . get_the_title() . '</strong><br>' . get_the_content() . '</li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo '<p>Отзывов пока нет.</p>';
}

Как улучшить систему отзывов с помощью плагинов WPShop

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

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

Заключение

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

Как добавить настройки пользователя в админ-панель WordPress
18.03.2026
Как настроить автоматический экспорт заказов WooCommerce в Excel
25.12.2025
Как изменить статус доставки в WooCommerce через хук заказа
18.04.2026
WooCommerce: как реализовать авторизацию пользователя через REST API с подтверждением
04.05.2026
Как создать автоматические уведомления о новых отзывах в WordPress
31.03.2026

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