Отзывы с рейтингом — отличный способ повысить доверие пользователей к вашему сайту и продуктам. В этой статье мы подробно разберём, как реализовать функционал отзывов с выбором оценки в WordPress. Это поможет вам получить более качественную обратную связь и улучшить взаимодействие с посетителями.
Почему отзывы с рейтингом важны для сайта на WordPress
Добавление отзывов с возможностью выбора оценки — это не просто красивая фича. Она помогает:
- Увеличить доверие к продукту или сервису.
- Собрать структурированную обратную связь.
- Улучшить SEO за счёт уникального контента.
- Повысить конверсию и вовлечённость пользователей.
Однако стандартных инструментов WordPress для создания отзывов с рейтингом не хватает, поэтому нужно либо использовать плагины, либо писать код самостоятельно.
Выбор плагина для отзывов с рейтингом
Для быстрой реализации можно использовать готовые решения. Вот несколько плагинов, которые отлично подходят:
WP Customer Reviews
Позволяет собирать отзывы с рейтингом, легко настраивается и совместим с большинством тем. Имеет шаблоны и поддержку шорткодов.
Site Reviews
Популярный плагин с возможностью гибкой настройки формы, поддержки нескольких рейтинговых систем и интеграции с Gutenberg.
Rating-Widget: Star Review System
Простой и функциональный плагин для добавления звёздочных рейтингов и отзывов.
Если хотите более кастомное решение, предлагаем пример кода для создания простого виджета отзывов с выбором оценки.
Создание кастомного типа записи и метаполей для отзывов с оценкой
Сначала зарегистрируем новый тип записи "wppolls_review" и добавим метаполе для оценки от 1 до 5.
function wppolls_register_review_post_type() {
$labels = array(
'name' => 'Отзывы',
'singular_name' => 'Отзыв',
'add_new' => 'Добавить отзыв',
'add_new_item' => 'Добавить новый отзыв',
'edit_item' => 'Редактировать отзыв',
'new_item' => 'Новый отзыв',
'view_item' => 'Просмотреть отзыв',
'search_items' => 'Искать отзывы',
'not_found' => 'Отзывы не найдены',
'not_found_in_trash' => 'В корзине отзывы не найдены',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'author'),
);
register_post_type('wppolls_review', $args);
}
add_action('init', 'wppolls_register_review_post_type');Для оценки создадим метабокс:
function wppolls_add_rating_metabox() {
add_meta_box('wppolls_rating', 'Оценка (1-5)', 'wppolls_rating_metabox_callback', 'wppolls_review', 'side');
}
function wppolls_rating_metabox_callback($post) {
$value = get_post_meta($post->ID, '_wppolls_rating', true);
echo '<select name="wppolls_rating" id="wppolls_rating">';
for ($i = 1; $i <= 5; $i++) {
$selected = selected($value, $i, false);
echo "<option value=\"$i\" $selected>$i</option>";
}
echo '</select>';
}
add_action('add_meta_boxes', 'wppolls_add_rating_metabox');Сохраним значение оценки:
function wppolls_save_rating_meta($post_id) {
if (array_key_exists('wppolls_rating', $_POST)) {
update_post_meta($post_id, '_wppolls_rating', intval($_POST['wppolls_rating']));
}
}
add_action('save_post', 'wppolls_save_rating_meta');Вывод отзывов с рейтингом на фронтенде
Чтобы показать отзывы с оценкой на странице, создадим шорткод. Он будет выводить список отзывов с количеством звёзд.
function wppolls_reviews_shortcode() {
$args = array(
'post_type' => 'wppolls_review',
'posts_per_page' => 10,
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Отзывов пока нет.</p>';
}
$output = '<div class="wppolls-reviews">';
while ($query->have_posts()) {
$query->the_post();
$rating = intval(get_post_meta(get_the_ID(), '_wppolls_rating', true));
$stars = str_repeat('★', $rating) . str_repeat('☆', 5 - $rating);
$output .= '<div class="wppolls-review">';
$output .= '<h3>' . get_the_title() . '</h3>';
$output .= '<div class="wppolls-rating">' . $stars . '</div>';
$output .= '<div class="wppolls-content">' . get_the_content() . '</div>';
$output .= '</div>';
}
$output .= '</div>';
wp_reset_postdata();
return $output;
}
add_shortcode('wppolls_reviews', 'wppolls_reviews_shortcode');Теперь в любом месте сайта можно вставить [wppolls_reviews] и увидеть список отзывов с оценками.
Добавление формы для новых отзывов с рейтингом
Чтобы посетители могли оставлять отзывы, создадим форму на фронтенде с помощью шорткода. Для упрощения возьмём базовую валидацию и обработку.
function wppolls_review_form_shortcode() {
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['wppolls_review_nonce']) && wp_verify_nonce($_POST['wppolls_review_nonce'], 'wppolls_submit_review')) {
$title = sanitize_text_field($_POST['wppolls_review_title']);
$content = sanitize_textarea_field($_POST['wppolls_review_content']);
$rating = intval($_POST['wppolls_review_rating']);
if ($rating < 1 || $rating > 5) $rating = 5;
$new_review = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'pending',
'post_type' => 'wppolls_review',
);
$post_id = wp_insert_post($new_review);
if ($post_id) {
update_post_meta($post_id, '_wppolls_rating', $rating);
echo '<p>Спасибо за отзыв! Он появится после модерации.</p>';
}
}
ob_start();
?>
<form method="post" class="wppolls-review-form">
<p><label>Заголовок отзыва</label><br><input type="text" name="wppolls_review_title" required></p>
<p><label>Текст отзыва</label><br><textarea name="wppolls_review_content" rows="5" required></textarea></p>
<p><label>Оценка</label><br><select name="wppolls_review_rating">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
</select></p>
<p><input type="submit" value="Отправить отзыв"></p>
<input type="hidden" name="wppolls_review_nonce" value="<?php echo wp_create_nonce('wppolls_submit_review'); ?>">
</form>
<?php
return ob_get_clean();
}
add_shortcode('wppolls_review_form', 'wppolls_review_form_shortcode');Этот код создаёт форму, которая добавляет отзыв в статусе ожидания модерации. Вы можете расширять проверку, добавлять CAPTCHA или интегрировать с плагинами безопасности.
Советы по улучшению и интеграции
Для улучшения функционала можно:
- Добавить AJAX-отправку формы для лучшего UX.
- Интегрировать с плагином Clearfy Pro для оптимизации и защиты от спама.
- Добавить вывод среднего рейтинга по всем отзывам с помощью дополнительного шорткода.
- Использовать WPCommunity или JournalX для создания сообщества, где отзывы будут более заметными и обсуждаемыми.
Если вы хотите более мощные и готовые решения, рекомендуем обратить внимание на плагины с расширенной поддержкой отзывов, но код из этой статьи отлично подойдёт для кастомных и лёгких проектов.