Отзывы с рейтингом — важный элемент для многих сайтов на WordPress, особенно если это интернет-магазины, каталоги услуг или корпоративные сайты. Они помогают повысить доверие пользователей и улучшить конверсию. В этой статье разберем, как реализовать систему отзывов с рейтингом, используя популярные плагины и собственные решения на PHP.
Почему отзывы с рейтингом важны для сайта
Отзывы с рейтингом не просто текстовые комментарии, а структурированные оценки, которые позволяют пользователям быстро понять качество товара или услуги. Это улучшает пользовательский опыт и влияет на SEO, так как поисковые системы учитывают отзывы и звездные рейтинги в сниппетах.
Кроме того, грамотно организованная система отзывов позволяет владельцу сайта модерировать комментарии, собирать отзывы и анализировать обратную связь для улучшения продукта.
Использование плагинов для отзывов с рейтингом
Самый простой способ добавить отзывы с рейтингом — установить специализированный плагин. Рассмотрим три популярных варианта.
1. WP Customer Reviews
Этот плагин позволяет создавать на страницах сайта форму для сбора отзывов с рейтингом по вашим критериям. Поддерживает модерацию, настройку полей и вывод отзывов в удобном виде.
Преимущества:
- Легкая интеграция с любыми темами.
- Возможность добавлять несколько критериев оценки.
- Поддержка капчи и антиспам.
Установка и настройка сводятся к активации плагина и добавлению шорткода [wp_customer_review] в нужное место.
2. Site Reviews
Это более мощный плагин с возможностью настроить шаблоны вывода, интеграцию с WooCommerce и SEO-оптимизированными микроразметками для звездных рейтингов.
Ключевые особенности:
- Поддержка нескольких типов рейтингов.
- Автоматическое добавление микроразметки Schema.org.
- Импорт и экспорт отзывов.
Для вывода отзывов используйте шорткод [site_reviews]. А для формы добавления отзывов — [site_reviews_form].
3. WP Product Review Lite
Подходит для сайтов с обзорами товаров. Позволяет добавлять рейтинги по различным параметрам, а также выделять обзоры специальным блоком.
Преимущества:
- Красивый дизайн блоков отзывов.
- Интеграция с Gutenberg.
- Возможность добавлять плюсы и минусы.
Создаем отзывы с рейтингом вручную: пример кода
Если вы хотите реализовать более гибкую систему без плагинов, можно добавить кастомный тип записи, метаполя и форму на фронтенде. Ниже пример базовой реализации.
1. Регистрируем кастомный тип записи "Отзыв"
function wphost_register_review_post_type() {
$labels = array(
'name' => 'Отзывы',
'singular_name' => 'Отзыв',
'add_new' => 'Добавить отзыв',
'add_new_item' => 'Добавить новый отзыв',
'edit_item' => 'Редактировать отзыв',
'new_item' => 'Новый отзыв',
'all_items' => 'Все отзывы',
'view_item' => 'Просмотр отзыва',
'search_items' => 'Поиск отзывов',
'not_found' => 'Отзывы не найдены',
'not_found_in_trash' => 'В корзине отзывов не найдено',
'menu_name' => 'Отзывы'
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'author'),
'show_in_rest' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-star-filled'
);
register_post_type('wphost_review', $args);
}
add_action('init', 'wphost_register_review_post_type');
2. Добавляем метаполе рейтинга (звезды)
Для простоты используем поле с числом от 1 до 5.
function wphost_add_review_meta_box() {
add_meta_box('wphost_review_rating', 'Рейтинг (1-5)', 'wphost_render_review_meta_box', 'wphost_review', 'side', 'default');
}
add_action('add_meta_boxes', 'wphost_add_review_meta_box');
function wphost_render_review_meta_box($post) {
$rating = get_post_meta($post->ID, '_wphost_review_rating', true);
echo '<label for="wphost_review_rating_field">Введите рейтинг:</label>';
echo '<input type="number" id="wphost_review_rating_field" name="wphost_review_rating_field" value="' . esc_attr($rating) . '" min="1" max="5" style="width:100%;" />';
}
function wphost_save_review_meta_box($post_id) {
if (array_key_exists('wphost_review_rating_field', $_POST)) {
$rating = intval($_POST['wphost_review_rating_field']);
if ($rating < 1) $rating = 1;
if ($rating > 5) $rating = 5;
update_post_meta($post_id, '_wphost_review_rating', $rating);
}
}
add_action('save_post', 'wphost_save_review_meta_box');
3. Выводим отзывы с рейтингом на странице
Пример вывода отзывов с отображением звезд.
function wphost_display_reviews() {
$args = array(
'post_type' => 'wphost_review',
'posts_per_page' => 10
);
$reviews = new WP_Query($args);
if ($reviews->have_posts()) {
echo '<div class="wphost-reviews">';
while ($reviews->have_posts()) {
$reviews->the_post();
$rating = get_post_meta(get_the_ID(), '_wphost_review_rating', true);
echo '<div class="wphost-review-item">';
echo '<h3>' . get_the_title() . '</h3>';
echo '<div class="wphost-review-rating">' . wphost_render_stars($rating) . '</div>';
echo '<div class="wphost-review-content">' . get_the_content() . '</div>';
echo '</div>';
}
echo '</div>';
wp_reset_postdata();
} else {
echo '<p>Отзывы пока отсутствуют.</p>';
}
}
function wphost_render_stars($rating) {
$output = '';
for ($i = 1; $i <= 5; $i++) {
if ($i <= $rating) {
$output .= '⭐';
} else {
$output .= '☆';
}
}
return $output;
}
4. Добавляем форму на фронтенд для сбора отзывов
Пример простой формы с полями заголовка, текста и рейтинга. Обработка отправки реализована через AJAX или классически через POST.
function wphost_review_form_shortcode() {
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['wphost_review_nonce']) && wp_verify_nonce($_POST['wphost_review_nonce'], 'wphost_submit_review')) {
$title = sanitize_text_field($_POST['wphost_review_title']);
$content = sanitize_textarea_field($_POST['wphost_review_content']);
$rating = intval($_POST['wphost_review_rating']);
if ($rating < 1) $rating = 1;
if ($rating > 5) $rating = 5;
$new_review = array(
'post_title' => $title,
'post_content' => $content,
'post_type' => 'wphost_review',
'post_status' => 'pending'
);
$post_id = wp_insert_post($new_review);
if ($post_id) {
update_post_meta($post_id, '_wphost_review_rating', $rating);
echo '<p>Спасибо за ваш отзыв! Он появится после проверки.</p>';
}
}
ob_start();
?>
<form method="post" action="">
<p><label>Заголовок отзыва<br><input type="text" name="wphost_review_title" required /></label></p>
<p><label>Текст отзыва<br><textarea name="wphost_review_content" rows="5" required></textarea></label></p>
<p><label>Рейтинг (1-5)<br><input type="number" name="wphost_review_rating" min="1" max="5" required /></label></p>
<p><input type="hidden" name="wphost_review_nonce" value="<?php echo wp_create_nonce('wphost_submit_review'); ?>" /></p>
<p><input type="submit" value="Отправить отзыв" /></p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('wphost_review_form', 'wphost_review_form_shortcode');
Обработка и модерация отзывов
В нашем примере отзывы при отправке получают статус pending, чтобы администратор мог проверить их перед публикацией. Это важно для предотвращения спама и неуместных комментариев.
Для удобства модерирования можно использовать готовые плагины антиспама или интегрировать Google reCAPTCHA в форму.
Расширенные возможности и интеграция
Если вы хотите более функциональную систему, стоит рассмотреть плагины с поддержкой микроразметки Schema.org, которые позволят поисковикам отображать рейтинг прямо в поисковой выдаче.
Также полезно интегрировать отзывы с рейтингом в страницы товаров WooCommerce или использовать плагин Clearfy Pro для оптимизации и контроля отзывов.
Для автоматизации вывода и кастомизации можно написать фильтры и функции в вашем файле functions.php или создать собственный плагин с расширенным функционалом.
Вывод
Добавление отзывов с рейтингом в WordPress — задача решаемая как через плагины, так и с помощью кастомного кода. Если нужна быстрая и надежная система, используйте проверенные плагины, такие как Site Reviews или WP Customer Reviews.
Для разработчиков и тех, кто любит полный контроль над функциями, создание собственного типа записи и метаполей — отличный вариант, позволяющий гибко настраивать систему под любые задачи.
Подробнее о плагинах и инструментах для WordPress можно узнать на WPSHOP.RU.