Владельцы сайтов на WordPress часто сталкиваются с задачей сделать систему отзывов более надежной и честной. Особенно актуально для интернет-магазинов и сервисов – необходимо подтверждать, что отзыв оставлен реальным покупателем, чтобы повысить доверие посетителей и улучшить конверсию.
В этой статье подробно разберем, как реализовать динамические отзывы с подтверждением покупки в WordPress с помощью готовых решений и собственного кода. Вы узнаете, как настроить проверку покупок, как создать удобный интерфейс для отзывов и как защитить отзывы от спама и фейков.
Почему важны отзывы с подтверждением покупки в WordPress
Отзывы без подтверждения часто бывают недостоверными, что снижает доверие пользователей к сайту. Негативные или ложные отзывы могут ухудшить репутацию, а положительные – быть фальшивыми.
Подтверждение покупки помогает:
- Фильтровать только реальные отзывы;
- Повысить доверие посетителей;
- Улучшить SEO за счет качественного и уникального контента;
- Автоматизировать процесс сбора отзывов.
Для сайтов на WordPress с WooCommerce или другими системами продажи товаров и услуг это особенно важно.
Использование плагинов для динамических отзывов с подтверждением
Самый простой способ — использовать готовые плагины с поддержкой подтверждения.
1. WooCommerce Verified Reviews
Плагин интегрируется с WooCommerce и автоматически разрешает оставлять отзывы только тем, кто купил товар. Поддерживает:
- Автоматическое подтверждение по заказам;
- Модерацию отзывов;
- Настраиваемые формы с полями.
Плюс: простая установка и надежность. Минус: работает только с WooCommerce.
2. WPReview Pro + интеграция с WooCommerce
Расширенный плагин для отзывов с рейтингами и визуальными элементами. Позволяет настроить подтверждение через покупку и отображать отзывы в удобном виде.
Вы можете купить WPReview Pro на wpshop.ru.
Создание собственной системы подтверждения отзывов через код
Если нужна кастомизация, можно реализовать проверку покупки и сбор отзывов самостоятельно с помощью хуков и функций WordPress и WooCommerce.
Основная идея решения
При отправке отзыва проверяем, был ли у пользователя завершенный заказ с данным товаром, и разрешаем добавить отзыв только в этом случае.
Пример кода проверки заказа покупателя для отзыва
function wpsource_check_customer_bought_product( $commentdata ) {
$user_id = get_current_user_id();
if ( ! $user_id ) {
wp_die('Только зарегистрированные пользователи могут оставлять отзывы.');
}
$product_id = $commentdata['comment_post_ID']; // ID товара
if ( ! wc_customer_bought_product( '', $user_id, $product_id ) ) {
wp_die('Вы можете оставить отзыв только после покупки этого товара.');
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'wpsource_check_customer_bought_product' );Эта функция отсекает отзывы от пользователей, не приобретавших товар. Она использует встроенную функцию WooCommerce wc_customer_bought_product.
Вывод отзывов с отметкой подтверждения
Чтобы визуально выделить подтвержденные отзывы, можно добавить метку «Проверенный покупатель» рядом с именем автора.
function wpsource_display_verified_label( $author, $comment_ID, $comment ) {
$comment_post_ID = $comment->comment_post_ID;
$user_id = $comment->user_id;
if ( wc_customer_bought_product( '', $user_id, $comment_post_ID ) ) {
$author .= ' <span class="verified-label" style="color:green; font-weight:bold;">(Проверенный покупатель)</span>';
}
return $author;
}
add_filter( 'get_comment_author', 'wpsource_display_verified_label', 10, 3 );Добавьте CSS для стилизации класса verified-label в вашей теме.
Как сделать динамическую форму отзывов с AJAX и проверкой на стороне сервера
Для лучшего UX стоит сделать форму отзывов динамической, чтобы не перезагружать страницу и быстро показывать ошибки. Реализуем отправку через AJAX с проверкой покупки.
Основные шаги:
- Создаем форму с полями для отзыва и звездного рейтинга.
- Подключаем JavaScript для отправки формы через AJAX.
- Обрабатываем запрос на сервере — проверяем покупку, сохраняем отзыв.
- Отправляем ответ клиенту с результатом.
Пример JavaScript (jQuery) для отправки формы:
jQuery(document).ready(function($) {
$('#wpsource-review-form').on('submit', function(e) {
e.preventDefault();
var data = $(this).serialize();
$.post(wpsource_ajax_object.ajax_url, data, function(response) {
if(response.success) {
alert('Спасибо за отзыв!');
location.reload();
} else {
alert('Ошибка: ' + response.data);
}
});
});
});PHP обработчик AJAX-запроса:
add_action( 'wp_ajax_wpsource_submit_review', 'wpsource_submit_review_callback' );
add_action( 'wp_ajax_nopriv_wpsource_submit_review', 'wpsource_submit_review_callback' );
function wpsource_submit_review_callback() {
if ( ! is_user_logged_in() ) {
wp_send_json_error('Требуется авторизация');
}
$user_id = get_current_user_id();
$product_id = intval( $_POST['product_id'] );
$comment_content = sanitize_text_field( $_POST['comment'] );
$rating = intval( $_POST['rating'] );
if ( ! wc_customer_bought_product( '', $user_id, $product_id ) ) {
wp_send_json_error('Вы должны купить товар, чтобы оставить отзыв');
}
$commentdata = array(
'comment_post_ID' => $product_id,
'comment_content' => $comment_content,
'user_id' => $user_id,
'comment_approved' => 1
);
$comment_id = wp_new_comment( $commentdata );
if ( $comment_id ) {
update_comment_meta( $comment_id, 'rating', $rating );
wp_send_json_success();
} else {
wp_send_json_error('Ошибка при сохранении отзыва');
}
}Не забудьте зарегистрировать локализацию скрипта с передачей ajax_url в JavaScript.
Советы по безопасности и управлению отзывами
Даже с подтверждением покупки нужно защитить отзывы от спама и злоупотреблений:
- Используйте nonce для AJAX-запросов;
- Добавляйте капчу или другие антиспам-методы;
- Модерируйте отзывы при необходимости;
- Ограничивайте частоту отзывов с одного аккаунта;
- Регулярно обновляйте WordPress и плагины.
Плагин Clearfy Pro поможет в оптимизации и безопасности сайта, в том числе по части отзывов. Подробнее на wpshop.ru.