В современном сайте на WordPress отзывы играют ключевую роль для повышения доверия пользователей и улучшения взаимодействия. В этой статье мы подробно разберём, как добавить поддержку отзывов в тему WordPress с нуля, используя кастомные типы записей, метаполя и шаблоны вывода. Также рассмотрим полезные плагины для управления отзывами и интеграцию с ними.
Почему важно добавить поддержку отзывов в тему WordPress
Отзыв — это не просто текст с оценкой, а мощный инструмент влияния на решение посетителя. Встроенный функционал отзывов позволяет:
- Собрать и структурировать мнения клиентов;
- Выдавать отзывы в удобном формате без необходимости сторонних сервисов;
- Улучшить SEO за счёт уникального контента и микроразметки;
- Управлять отзывами из панели администратора;
- Поддерживать кастомные поля, например, рейтинг, имя автора, дату и прочее.
Добавляя поддержку отзывов непосредственно в тему, вы получаете полный контроль над выводом и стилем, а также экономите ресурсы сайта.
Создание кастомного типа записей для отзывов
Первый шаг — зарегистрировать кастомный тип записей wp_themes_register_reviews_post_type, чтобы отделить отзывы от обычных записей и страниц. Это обеспечит удобное управление в админке и гибкость.
function wp_themes_register_reviews_post_type() {
$labels = array(
'name' => 'Отзывы',
'singular_name' => 'Отзыв',
'menu_name' => 'Отзывы',
'name_admin_bar' => 'Отзыв',
'add_new' => 'Добавить отзыв',
'add_new_item' => 'Добавить новый отзыв',
'new_item' => 'Новый отзыв',
'edit_item' => 'Редактировать отзыв',
'view_item' => 'Просмотреть отзыв',
'all_items' => 'Все отзывы',
'search_items' => 'Поиск отзывов',
'not_found' => 'Отзывы не найдены.',
'not_found_in_trash' => 'В корзине отзывов не найдено.',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'reviews'),
'show_in_rest' => true, // поддержка Gutenberg
'supports' => array('title', 'editor', 'author', 'thumbnail'),
'menu_position' => 20,
'menu_icon' => 'dashicons-testimonial',
);
register_post_type('review', $args);
}
add_action('init', 'wp_themes_register_reviews_post_type');После добавления этого кода в файл functions.php темы, в админке появится раздел «Отзывы» с возможностью добавлять и редактировать записи.
Добавление метаполей для отзывов
Чтобы отзывы были информативными, добавим метаполе для рейтинга и имени автора отзыва. Для этого используем стандартный механизм метаполей WordPress.
Добавим поля в админку с помощью хуков:
function wp_themes_add_review_metabox() {
add_meta_box(
'wp_themes_review_rating',
'Рейтинг отзыва',
'wp_themes_review_rating_callback',
'review',
'side',
'default'
);
}
add_action('add_meta_boxes', 'wp_themes_add_review_metabox');
function wp_themes_review_rating_callback($post) {
wp_nonce_field('wp_themes_save_review_rating', 'wp_themes_review_rating_nonce');
$value = get_post_meta($post->ID, '_wp_themes_review_rating', true);
echo '<label for="wp_themes_review_rating_field">Рейтинг (1-5):</label>';
echo '<input type="number" id="wp_themes_review_rating_field" name="wp_themes_review_rating_field" min="1" max="5" value="' . esc_attr($value) . '" style="width:100%;" />';
}
function wp_themes_save_review_rating($post_id) {
if (!isset($_POST['wp_themes_review_rating_nonce']) || !wp_verify_nonce($_POST['wp_themes_review_rating_nonce'], 'wp_themes_save_review_rating')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['wp_themes_review_rating_field'])) {
$rating = intval($_POST['wp_themes_review_rating_field']);
$rating = max(1, min(5, $rating));
update_post_meta($post_id, '_wp_themes_review_rating', $rating);
}
}
add_action('save_post', 'wp_themes_save_review_rating');Аналогично можно добавить метаполе для имени автора и любых других данных.
Вывод отзывов в шаблоне темы
Чтобы выводить отзывы на сайте, создадим кастомный шаблон для архива отзывов archive-review.php или включим блок в нужное место темы.
Пример простого цикла вывода отзывов с рейтингом:
<?php
$args = array(
'post_type' => 'review',
'posts_per_page' => 10,
);
$reviews_query = new WP_Query($args);
if ($reviews_query->have_posts()) {
echo '<div class="wp-themes-reviews">';
while ($reviews_query->have_posts()) {
$reviews_query->the_post();
$rating = intval(get_post_meta(get_the_ID(), '_wp_themes_review_rating', true));
echo '<article id="post-' . get_the_ID() . '" class="review-item">';
echo '<h3>' . get_the_title() . '</h3>';
echo '<div class="review-content">' . get_the_content() . '</div>';
echo '<div class="review-rating">Рейтинг: ' . str_repeat('⭐', $rating) . '</div>';
echo '</article>';
}
echo '</div>';
wp_reset_postdata();
} else {
echo '<p>Отзывов пока нет.</p>';
}
?>В этом примере мы выводим заголовок, содержимое и визуальное отображение рейтинга с помощью звёздочек.
Использование плагинов для расширенного функционала отзывов
Если вы хотите сэкономить время и добавить более продвинутые функции, можно использовать плагины, совместимые с кастомными типами записей или отдельные модули для отзывов:
- WP Review — популярный плагин для создания отзывов с рейтингами, поддерживает интеграцию с Gutenberg.
- Clearfy Pro — плагин для оптимизации и расширения функционала сайта, включая улучшенную работу с отзывами.
- WPRemark — плагин для отзывов с возможностью модерации и кастомизации.
Плагины облегчают работу, особенно если нужна интеграция с WooCommerce или поддержка микроразметки Schema.org для отзывов.
Добавление микроразметки Schema.org для отзывов
Чтобы улучшить SEO и отобразить отзывы в виде расширенных сниппетов в поисковой выдаче, добавьте микроразметку согласно стандарту Schema.org.
Пример обёртки для отзыва с рейтингом:
<article itemscope itemtype="https://schema.org/Review">
<h3 itemprop="author" itemscope itemtype="https://schema.org/Person"><span itemprop="name"><?php the_title(); ?></span></h3>
<div itemprop="reviewBody"><?php the_content(); ?></div>
<div itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
Рейтинг: <span itemprop="ratingValue"><?php echo $rating; ?></span> из 5
</div>
</article>Такая разметка поможет поисковикам правильно распознавать отзывы и показывать их в результатах.
Заключение
Добавление поддержки отзывов в тему WordPress — задача, которая требует понимания кастомных типов записей, метаполей и вывода шаблонов. Использование приведённых в статье приёмов и примеров кода позволит создать удобный и функциональный раздел с отзывами, который повысит доверие пользователей и улучшит SEO.
Если нужны дополнительные возможности, рассмотрите плагины из раздела выше, которые интегрируются с вашим сайтом и помогут автоматизировать управление отзывами.