Система отзывов с оценками — важный элемент для многих сайтов на WordPress, будь то интернет-магазин, блог или корпоративный сайт. Она помогает повысить доверие пользователей и улучшить вовлеченность. В этой статье мы подробно разберем, как добавить отзывы с рейтингами на ваш сайт, используя популярные плагины и кастомные решения на PHP.
Почему отзывы с рейтингами важны для сайта на WordPress
Отзывы с оценками помогают посетителям быстро сформировать мнение о продукте или услуге. Они способствуют увеличению конверсии, а также улучшают SEO благодаря уникальному пользовательскому контенту. Однако стандартный функционал WordPress не предусматривает удобного способа сбора и отображения рейтингов, поэтому приходится либо использовать плагины, либо писать свой код.
Основные задачи для системы отзывов с рейтингами:
- Форма для отправки отзывов с возможностью поставить оценку (например, от 1 до 5 звезд);
- Отображение отзывов с рейтингами на странице продукта или записи;
- Модерация отзывов (одобрение или отклонение);
- Агрегация рейтингов (средняя оценка, количество оценок);
- Защита от спама и фейковых отзывов.
Лучшие плагины для отзывов с рейтингами в WordPress
Если вы хотите быстро и без особых усилий реализовать систему отзывов, рекомендуем обратить внимание на следующие плагины:
1. WP Customer Reviews
Простой и бесплатный плагин, который позволяет добавлять отзывы с рейтингами под любыми страницами. Есть возможность модерации, настройки полей формы и антиспам-защита.
Плюсы:
- Легко настраивается;
- Совместим с большинством тем;
- Поддержка рейтинга по звездам;
- Возможность добавить несколько отзывов на одну страницу.
2. Site Reviews
Более продвинутый плагин с гибкой системой рейтингов и шаблонами вывода. Позволяет выводить отзывы в виде виджетов, шорткодами и интегрируется с Gutenberg.
Возможности:
- Настраиваемые поля;
- Возможность импортировать и экспортировать отзывы;
- Поддержка reCAPTCHA для защиты;
- Расширенные шаблоны для вывода.
3. WPGPT + Expert Review (от WPSHOP.RU)
Если вы используете плагин WPGPT с дополнением Expert Review, вы получите мощный инструмент для сбора и анализа отзывов с оценками, которые можно интегрировать с GPT для автоматического формирования рекомендаций и ответов.
Как сделать систему отзывов с рейтингами вручную: пример кода
Если вы предпочитаете кастомный подход и хотите полный контроль, можно создать простую систему отзывов с помощью пользовательского типа записи и мета-полей.
Создаем тип записи и мета-поле для рейтинга
Добавим в functions.php вашей темы следующий код:
function wpapp_register_review_post_type() {
$labels = array(
'name' => 'Отзывы',
'singular_name' => 'Отзыв',
'menu_name' => 'Отзывы',
'add_new' => 'Добавить отзыв',
'add_new_item' => 'Добавить новый отзыв',
);
$args = array(
'labels' => $labels,
'public' => false,
'show_ui' => true,
'supports' => array('title', 'editor', 'author'),
'capability_type' => 'post',
);
register_post_type('wpapp_review', $args);
}
add_action('init', 'wpapp_register_review_post_type');
// Добавляем мета-бокс для рейтинга
function wpapp_add_review_rating_meta_box() {
add_meta_box('wpapp_review_rating', 'Рейтинг (1-5)', 'wpapp_review_rating_meta_box_callback', 'wpapp_review', 'side');
}
add_action('add_meta_boxes', 'wpapp_add_review_rating_meta_box');
function wpapp_review_rating_meta_box_callback($post) {
$value = get_post_meta($post->ID, '_wpapp_review_rating', true);
echo '<input type="number" name="wpapp_review_rating" value="'.esc_attr($value).'" min="1" max="5" />';
}
// Сохраняем мета-поле
function wpapp_save_review_rating_meta($post_id) {
if (array_key_exists('wpapp_review_rating', $_POST)) {
$rating = intval($_POST['wpapp_review_rating']);
if ($rating < 1) $rating = 1;
if ($rating > 5) $rating = 5;
update_post_meta($post_id, '_wpapp_review_rating', $rating);
}
}
add_action('save_post', 'wpapp_save_review_rating_meta');Вывод отзывов с рейтингами на странице
Добавим функцию для вывода средней оценки и списка отзывов для произвольного поста, например, товара:
function wpapp_get_average_review_rating($post_id) {
$args = array(
'post_type' => 'wpapp_review',
'meta_query' => array(
array(
'key' => '_wpapp_review_rating',
'compare' => 'EXISTS',
),
),
'post_status' => 'publish',
'meta_key' => '_wpapp_review_rating',
'posts_per_page' => -1,
'author' => 0,
);
$reviews = get_posts($args);
if (!$reviews) return 0;
$sum = 0;
$count = 0;
foreach ($reviews as $review) {
$rating = get_post_meta($review->ID, '_wpapp_review_rating', true);
if ($rating) {
$sum += intval($rating);
$count++;
}
}
return $count ? round($sum / $count, 2) : 0;
}
function wpapp_display_reviews($post_id) {
$args = array(
'post_type' => 'wpapp_review',
'post_status' => 'publish',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
);
$reviews = get_posts($args);
echo '<div class="wpapp-reviews">';
foreach ($reviews as $review) {
$rating = get_post_meta($review->ID, '_wpapp_review_rating', true);
echo '<div class="wpapp-review-item">';
echo '<h4>'.esc_html($review->post_title).'</h4>';
echo '<div class="wpapp-rating">' . str_repeat('⭐', intval($rating)) . '</div>';
echo '<p>'.esc_html($review->post_content).'</p>';
echo '</div>';
}
echo '</div>';
}Создаем форму для отправки отзывов
Для сбора отзывов добавим простую форму через шорткод:
function wpapp_review_form_shortcode() {
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['wpapp_review_nonce']) && wp_verify_nonce($_POST['wpapp_review_nonce'], 'wpapp_save_review')) {
$title = sanitize_text_field($_POST['review_title']);
$content = sanitize_textarea_field($_POST['review_content']);
$rating = intval($_POST['review_rating']);
if ($rating < 1) $rating = 1;
if ($rating > 5) $rating = 5;
$review_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'pending', // чтобы можно было модерацию делать
'post_type' => 'wpapp_review',
);
$post_id = wp_insert_post($review_post);
if ($post_id) {
update_post_meta($post_id, '_wpapp_review_rating', $rating);
echo '<p>Спасибо за ваш отзыв! После проверки он появится на сайте.</p>';
}
}
ob_start();
?>
<form method="post" class="wpapp-review-form">
<label>Заголовок отзыва:<input type="text" name="review_title" required /></label><br/>
<label>Текст отзыва:<textarea name="review_content" required></textarea></label><br/>
<label>Рейтинг (1-5):<input type="number" name="review_rating" min="1" max="5" required /></label><br/>
<input type="hidden" name="wpapp_review_nonce" value="<?php echo wp_create_nonce('wpapp_save_review'); ?>" />
<button type="submit">Отправить отзыв</button>
</form>
<?php
return ob_get_clean();
}
add_shortcode('wpapp_review_form', 'wpapp_review_form_shortcode');Как улучшить систему отзывов и рейтингов
Модерация и уведомления
Чтобы автоматизировать модерацию, можно добавить уведомления администратору при появлении новых отзывов. Для этого используйте хук transition_post_status и функцию wp_mail.
Защита от спама
Рекомендуется интегрировать reCAPTCHA или использовать плагин типа Antispam Bee для защиты формы от спама. В кастомной форме можно добавить поддержку Google reCAPTCHA с помощью JavaScript и серверной проверки.
Вывод рейтингов в виде звездочек
Для удобства восприятия можно использовать SVG или иконки FontAwesome для звездочек, а не просто символы. Это сделает дизайн более современным и адаптивным.
Заключение
Добавление отзывов с рейтингами в WordPress — задача, которую можно решить как с помощью готовых плагинов, так и с кастомным кодом. Плагины удобны и функциональны для быстрого старта, а собственные решения позволяют гибко настраивать логику и интерфейс под конкретные задачи.
Для более продвинутых решений и интеграций рекомендуем изучить WPGPT вместе с Expert Review для мощного анализа отзывов и генерации ответов на вопросы пользователей.