Почему отзывы важны для сайта на WordPress
Отзывы пользователей — это один из ключевых элементов для повышения доверия к сайту и улучшения конверсии. Особенно актуально для интернет-магазинов, сервисных сайтов и портфолио. В WordPress есть множество способов добавить отзывы: от простых плагинов до кастомных решений с кодом. В этой статье мы разберём практические варианты реализации отзывов на сайте с примерами и полезными советами.
Добавление отзывов помогает не только улучшить UX, но и положительно влияет на SEO — поисковые системы ценят уникальный пользовательский контент и социальные доказательства.
Популярные плагины для отзывов в WordPress
WP Customer Reviews — лёгкий и функциональный
Плагин WP Customer Reviews позволяет добавлять отзывы на любую страницу или запись через шорткод. Он прост в настройке и содержит базовые функции для модерации отзывов, антиспама и кастомизации полей.
Преимущества плагина:
- Легкая интеграция через шорткод;
- Возможность модерировать отзывы;
- Поддержка микроразметки schema.org для улучшения сниппетов в поисковиках;
- Настраиваемые поля формы.
Этот плагин отлично подойдёт для небольших сайтов, которым нужно быстро получить отзывы без глубоких изменений темы.
Site Reviews — расширенный функционал и гибкость
Site Reviews — мощный плагин с рейтингами, фильтрацией и поддержкой нескольких форм отзывов. Он позволяет выводить отзывы в любом месте сайта через виджеты или шорткоды и имеет интеграцию с WooCommerce.
Основные возможности:
- Рейтинг по звёздам;
- Фильтрация и сортировка отзывов;
- Импорт и экспорт отзывов;
- Совместимость со многими темами и плагинами.
Site Reviews можно адаптировать под разные задачи, от простых до сложных.
Как добавить отзывы с помощью кастомного типа записи и кода
Если вы хотите гибко контролировать логику и оформление отзывов, можно реализовать их вручную, создав свой кастомный тип записи (Custom Post Type) и мета-поля. Рассмотрим пример с регистрацией CPT и добавлением мета-поля для оценки.
Регистрация кастомного типа записи "Отзыв"
function wpcourse_register_review_cpt() {
$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'),
'menu_icon' => 'dashicons-testimonial',
);
register_post_type('wpcourse_review', $args);
}
add_action('init', 'wpcourse_register_review_cpt');Этот код создаёт новый тип записи «Отзывы» с базовыми полями заголовка и содержимого.
Добавление мета-поля для рейтинга
Чтобы добавить рейтинг (например, от 1 до 5), используем метабоксы:
function wpcourse_add_review_meta_box() {
add_meta_box(
'wpcourse_review_rating',
'Рейтинг отзыва',
'wpcourse_review_rating_callback',
'wpcourse_review',
'side',
'default'
);
}
add_action('add_meta_boxes', 'wpcourse_add_review_meta_box');
function wpcourse_review_rating_callback($post) {
$value = get_post_meta($post->ID, '_wpcourse_review_rating', true);
echo '<label for="wpcourse_review_rating_field">Оценка (1–5): </label>';
echo '<input type="number" id="wpcourse_review_rating_field" name="wpcourse_review_rating_field" value="'.esc_attr($value).'" min="1" max="5" />';
}
function wpcourse_save_review_rating($post_id) {
if (array_key_exists('wpcourse_review_rating_field', $_POST)) {
update_post_meta(
$post_id,
'_wpcourse_review_rating',
intval($_POST['wpcourse_review_rating_field'])
);
}
}
add_action('save_post', 'wpcourse_save_review_rating');Теперь при создании или редактировании отзыва можно выставить рейтинг от 1 до 5.
Вывод отзывов на странице с кастомным шаблоном
Для вывода отзывов удобно создать кастомный WP_Query с сортировкой по дате или рейтингу. Пример кода для вывода 5 последних отзывов с рейтингом:
$args = array(
'post_type' => 'wpcourse_review',
'posts_per_page' => 5,
'meta_key' => '_wpcourse_review_rating',
'orderby' => 'meta_value_num',
'order' => 'DESC',
);
$review_query = new WP_Query($args);
if ($review_query->have_posts()) {
echo '<div class="wpcourse-reviews">';
while ($review_query->have_posts()) {
$review_query->the_post();
$rating = get_post_meta(get_the_ID(), '_wpcourse_review_rating', true);
echo '<article class="review-item">';
echo '<h3>' . get_the_title() . '</h3>';
echo '<div class="review-rating">Рейтинг: ' . intval($rating) . '/5</div>';
echo '<div class="review-content">' . get_the_content() . '</div>';
echo '</article>';
}
echo '</div>';
wp_reset_postdata();
} else {
echo '<p>Отзывов пока нет.</p>';
}Вывод можно оформить в шаблоне темы или через шорткод, если добавить соответствующую функцию.
Добавление формы отправки отзывов с валидацией
Чтобы пользователи могли оставлять отзывы, создадим простую форму на фронтенде и обработчик.
Форма обратной связи для отзывов
Пример HTML формы:
<form method="post" action="">
<label>Ваше имя:</label>
<input type="text" name="wpcourse_review_author" required />
<label>Отзыв:</label>
<textarea name="wpcourse_review_content" required></textarea>
<label>Рейтинг (1-5):</label>
<input type="number" name="wpcourse_review_rating" min="1" max="5" required />
<input type="submit" name="wpcourse_submit_review" value="Отправить отзыв" />
</form>Обработка отправки формы в functions.php
function wpcourse_handle_review_form() {
if (isset($_POST['wpcourse_submit_review'])) {
$author = sanitize_text_field($_POST['wpcourse_review_author']);
$content = sanitize_textarea_field($_POST['wpcourse_review_content']);
$rating = intval($_POST['wpcourse_review_rating']);
if (empty($author) || empty($content) || $rating < 1 || $rating > 5) {
echo '<p>Пожалуйста, заполните все поля корректно.</p>';
return;
}
$new_review = array(
'post_title' => 'Отзыв от ' . $author,
'post_content' => $content,
'post_status' => 'pending', // модерация
'post_type' => 'wpcourse_review',
);
$post_id = wp_insert_post($new_review);
if ($post_id) {
update_post_meta($post_id, '_wpcourse_review_rating', $rating);
echo '<p>Спасибо за ваш отзыв! После модерации он появится на сайте.</p>';
} else {
echo '<p>Произошла ошибка при добавлении отзыва.</p>';
}
}
}
add_action('wp', 'wpcourse_handle_review_form');Форма отправляет данные на текущую страницу, где происходит их проверка и добавление отзыва в базу в статусе ожидания модерации.
Использование микроразметки для отзывов (schema.org)
Чтобы отзывы отображались в расширенных сниппетах Google, нужно добавить микроразметку. Пример простого вывода для отдельного отзыва:
function wpcourse_add_review_schema() {
if (is_singular('wpcourse_review')) {
global $post;
$rating = get_post_meta($post->ID, '_wpcourse_review_rating', true);
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'Review',
'author' => get_the_title($post->ID),
'reviewBody' => get_the_content(null, false, $post->ID),
'reviewRating' => array(
'@type' => 'Rating',
'ratingValue' => intval($rating),
'bestRating' => 5,
'worstRating' => 1,
),
);
echo '<script type="application/ld+json">' . wp_json_encode($schema) . '</script>';
}
}
add_action('wp_footer', 'wpcourse_add_review_schema');Это повысит видимость отзывов в поисковых системах.
Заключение
Настройка отзывов в WordPress может быть решена как с помощью готовых плагинов (WP Customer Reviews, Site Reviews и др.), так и через создание собственного кастомного типа записи с мета-полями и формой. Такой подход позволяет гибко адаптировать функционал под конкретные задачи проекта.
Для удобства модерации, безопасности и SEO важно не забывать про валидацию данных, антиспам фильтры и микроразметку schema.org.
Если хотите подробнее изучить плагины и расширения, посетите магазин WPSHOP с качественными решениями для WordPress.