В современных сайтах на WordPress часто требуется выводить отзывы пользователей в удобном формате. Использование шорткодов — один из самых гибких способов вставить такой контент в записи, страницы или виджеты. В этой статье мы рассмотрим, как создать простой шорткод для вывода отзывов на сайте WordPress без плагинов, а также как дополнить функционал с помощью нескольких полезных фишек.
Почему стоит создать собственный шорткод для отзывов?
Готовые плагины для отзывов часто перегружают сайт лишним кодом и функционалом, который не всегда нужен. Создавая собственный шорткод, вы получаете легкий и понятный инструмент, который можно адаптировать под задачи проекта. Кроме того, вы полностью контролируете вывод и стилизацию отзывов.
Основные преимущества собственного шорткода:
- Минимум стороннего кода и зависимостей;
- Возможность гибкой настройки и расширения функционала;
- Управление выводом через стандартные записи или пользовательские типы записей;
- Оптимизация под требования проекта.
Далее покажем пример создания простого шорткода для вывода отзывов, где отзывы будут храниться как записи типа review.
Создание пользовательского типа записей для отзывов
Для удобства управления отзывами испольуем register_post_type. Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpreboot_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' => false,
'supports' => array('title', 'editor', 'author'),
'menu_position' => 20,
'menu_icon' => 'dashicons-testimonial',
'rewrite' => array('slug' => 'reviews'),
);
register_post_type('review', $args);
}
add_action('init', 'wpreboot_register_review_post_type');Этот код создаст новый тип записей «Отзывы» с базовыми полями заголовка и содержимого. Вы сможете добавлять отзывы через админку WordPress.
Создаем шорткод для вывода отзывов
Теперь реализуем функцию, которая будет выводить список отзывов по шорткоду [wpreboot_reviews]. Добавьте в functions.php следующий код:
function wpreboot_reviews_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5,
'order' => 'DESC',
'orderby' => 'date',
), $atts, 'wpreboot_reviews');
$args = array(
'post_type' => 'review',
'posts_per_page' => intval($atts['count']),
'order' => $atts['order'],
'orderby' => $atts['orderby'],
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Отзывы пока отсутствуют.</p>';
}
$output = '<div class="wpreboot-reviews">';
while ($query->have_posts()) {
$query->the_post();
$output .= '<div class="wpreboot-review-item">';
$output .= '<h3 class="wpreboot-review-title">' . get_the_title() . '</h3>';
$output .= '<div class="wpreboot-review-content">' . get_the_content() . '</div>';
$output .= '<span class="wpreboot-review-author">Автор: ' . get_the_author() . '</span>';
$output .= '</div>';
}
$output .= '</div>';
wp_reset_postdata();
return $output;
}
add_shortcode('wpreboot_reviews', 'wpreboot_reviews_shortcode');Этот шорткод принимает параметры:
count— количество выводимых отзывов (по умолчанию 5);order— порядок сортировки,ASCилиDESC(по умолчаниюDESC);orderby— по какому полю сортировать (по умолчаниюdate).
Вы можете вставить [wpreboot_reviews count=3 order="ASC"] в любой пост или страницу для вывода отзывов.
Добавляем кастомные поля для оценки и даты
Чтобы отзывы выглядели информативнее, полезно добавить оценку и дату посещения. Для этого используйте кастомные поля (Custom Fields) или метаполя. Рассмотрим пример с использованием метаполей:
- В админке при добавлении отзыва добавьте метаполя
rating(число от 1 до 5) иvisit_date(дата). - Для удобства создайте метабоксы с помощью плагина Advanced Custom Fields или вручную.
Для вывода этих полей изменим функцию шорткода:
function wpreboot_reviews_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5,
'order' => 'DESC',
'orderby' => 'date',
), $atts, 'wpreboot_reviews');
$args = array(
'post_type' => 'review',
'posts_per_page' => intval($atts['count']),
'order' => $atts['order'],
'orderby' => $atts['orderby'],
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Отзывы пока отсутствуют.</p>';
}
$output = '<div class="wpreboot-reviews">';
while ($query->have_posts()) {
$query->the_post();
$rating = get_post_meta(get_the_ID(), 'rating', true);
$visit_date = get_post_meta(get_the_ID(), 'visit_date', true);
$output .= '<div class="wpreboot-review-item">';
$output .= '<h3 class="wpreboot-review-title">' . get_the_title() . '</h3>';
$output .= '<div class="wpreboot-review-content">' . get_the_content() . '</div>';
if ($rating) {
$output .= '<div class="wpreboot-review-rating">Оценка: ' . intval($rating) . ' из 5</div>';
}
if ($visit_date) {
$output .= '<div class="wpreboot-review-date">Дата посещения: ' . esc_html($visit_date) . '</div>';
}
$output .= '<span class="wpreboot-review-author">Автор: ' . get_the_author() . '</span>';
$output .= '</div>';
}
$output .= '</div>';
wp_reset_postdata();
return $output;
}Этот код выводит дополнительные данные, если они заполнены в записи отзыва.
Как стилизовать отзывы и сделать их удобочитаемыми
Для красивого отображения отзывов добавьте CSS в файл стилей темы или через кастомайзер:
.wpreboot-reviews {
background: #f9f9f9;
padding: 20px;
border-radius: 8px;
}
.wpreboot-review-item {
background: #fff;
padding: 15px;
margin-bottom: 15px;
border-left: 5px solid #0073aa;
}
.wpreboot-review-title {
font-size: 18px;
margin-bottom: 8px;
color: #0073aa;
}
.wpreboot-review-content {
font-size: 14px;
margin-bottom: 10px;
}
.wpreboot-review-rating {
font-weight: bold;
color: #ffb400;
margin-bottom: 5px;
}
.wpreboot-review-date {
font-size: 12px;
color: #666;
margin-bottom: 5px;
}
.wpreboot-review-author {
font-size: 12px;
color: #333;
font-style: italic;
}
Такая стилизация сделает отзывы аккуратными и читабельными на любом устройстве.
Расширение функционала с помощью плагинов WPSHOP
Если вам нужна более продвинутая система отзывов, можно использовать плагин Expert Review от WPSHOP. Он добавляет удобный интерфейс для управления оценками, комментариями и интеграцию с WooCommerce.
Также для автоматизации отображения отзывов и их модерирования полезен плагин WPRemark, который позволяет автоматически публиковать или скрывать отзывы по заданным правилам.
Итоги и советы по использованию шорткода отзывов
Создание собственного шорткода для отзывов позволяет контролировать весь процесс вывода и оформления пользовательского контента. Важно:
- Использовать кастомные типы записей для удобства;
- Добавлять необходимые метаполя для расширенной информации;
- Стилизовать вывод отзывов для лучшего восприятия;
- При необходимости расширять функционал плагинами из экосистемы WPSHOP.
Такой подход обеспечит качественный и легко управляемый блок отзывов на вашем сайте WordPress.