Как создать динамические отзывы в WordPress с Expert Review

Почему динамические отзывы важны для сайта на WordPress

Отзывы клиентов — один из ключевых факторов доверия и повышения конверсии на сайте. В отличие от статичных комментариев, динамические отзывы позволяют автоматически обновлять и сортировать отзывы, отображать их в разных форматах и интегрироваться с визуальными элементами сайта. Особенно это актуально для магазинов, сервисов и образовательных порталов.

Плагин Expert Review значительно упрощает работу с отзывами, предоставляя готовый функционал для сбора, модерации и отображения отзывов с оценками и дополнительными метаданными.

В этой статье мы подробно разберём, как настроить Expert Review для динамических отзывов, а также добавим кастомные функции для расширения возможностей плагина.

Установка и базовая настройка Expert Review

Для начала установим плагин Expert Review через админ-панель WordPress. Перейдите в раздел "Плагины" -> "Добавить новый", введите в поиске «Expert Review» и установите плагин от WPShop.

После активации перейдите в меню плагина и настройте основные параметры: выбор пост-типов, для которых будут собираться отзывы, параметры отображения рейтинга, шаблоны вывода.

Expert Review поддерживает несколько форматов вывода — виджет, шорткод, Gutenberg-блок. Для динамического вывода на страницах лучше использовать шорткод с параметрами.

Создание кастомного шорткода для динамических отзывов

Для более гибкого управления отзывами создадим собственный шорткод, который будет отображать отзывы с сортировкой и фильтрацией по дате и рейтингу.

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wpto_get_dynamic_reviews($atts) {
    $atts = shortcode_atts(array(
        'post_id' => get_the_ID(),
        'orderby' => 'date', // Можно: date, rating
        'order' => 'DESC',
        'count' => 5
    ), $atts, 'wpto_dynamic_reviews');

    $args = array(
        'post_type' => 'wpexpert_review',
        'posts_per_page' => intval($atts['count']),
        'meta_query' => array(
            array(
                'key' => 'wpto_review_post_id',
                'value' => intval($atts['post_id']),
                'compare' => '='
            )
        ),
        'orderby' => $atts['orderby'],
        'order' => $atts['order']
    );

    $reviews = new WP_Query($args);
    if (!$reviews->have_posts()) return '<p>Отзывы отсутствуют.</p>';

    $output = '<div class="wpto-dynamic-reviews">';
    while ($reviews->have_posts()) {
        $reviews->the_post();
        $rating = get_post_meta(get_the_ID(), 'wpto_review_rating', true);
        $author = get_post_meta(get_the_ID(), 'wpto_review_author', true);
        $date = get_the_date('d.m.Y');
        $content = get_the_content();

        $output .= '<div class="review-item">';
        $output .= '<div class="review-rating">Рейтинг: ' . esc_html($rating) . '/5</div>';
        $output .= '<div class="review-author">Отзыв от: ' . esc_html($author) . '</div>';
        $output .= '<div class="review-date">' . esc_html($date) . '</div>';
        $output .= '<div class="review-content">' . wp_kses_post($content) . '</div>';
        $output .= '</div>';
    }
    wp_reset_postdata();
    $output .= '</div>';
    return $output;
}
add_shortcode('wpto_dynamic_reviews', 'wpto_get_dynamic_reviews');

Теперь на любой странице или записи вы можете вывести отзывы следующим образом:

[wpto_dynamic_reviews post_id=123 orderby="rating" order="DESC" count=10]

Этот шорткод покажет до 10 отзывов к посту с ID 123, отсортированных по рейтингу по убыванию.

Автоматическое обновление рейтингов и уведомления

Expert Review поддерживает автоматический подсчёт среднего рейтинга и вывод агрегированных данных. Но можно расширить функционал, добавив уведомления администратору при появлении новых отзывов и автоматическое обновление метаданных.

Вот пример функции, которая отправляет письмо после публикации нового отзыва:

function wpto_notify_admin_new_review($post_ID, $post) {
    if ($post->post_type !== 'wpexpert_review') return;

    $admin_email = get_option('admin_email');
    $subject = 'Новый отзыв опубликован';
    $message = 'Опубликован новый отзыв с ID: ' . $post_ID . '. Проверьте модерацию.';

    wp_mail($admin_email, $subject, $message);
}
add_action('publish_wpexpert_review', 'wpto_notify_admin_new_review', 10, 2);

Также полезно обновлять средний рейтинг родительского поста при изменении отзывов. Для этого используйте хук сохранения:

function wpto_update_parent_post_rating($post_id) {
    if (get_post_type($post_id) !== 'wpexpert_review') return;

    $parent_id = get_post_meta($post_id, 'wpto_review_post_id', true);
    if (!$parent_id) return;

    $reviews = get_posts(array(
        'post_type' => 'wpexpert_review',
        'meta_key' => 'wpto_review_post_id',
        'meta_value' => $parent_id,
        'fields' => 'ids'
    ));

    if (!$reviews) return;

    $total_rating = 0;
    $count = count($reviews);

    foreach ($reviews as $review_id) {
        $rating = (int) get_post_meta($review_id, 'wpto_review_rating', true);
        $total_rating += $rating;
    }

    $average = round($total_rating / $count, 2);

    update_post_meta($parent_id, 'wpto_average_rating', $average);
}
add_action('save_post_wpexpert_review', 'wpto_update_parent_post_rating');

Интеграция с темой и стилизация отзывов

Для гармоничного отображения динамических отзывов добавьте CSS стили в файл style.css темы:

.wpto-dynamic-reviews {
    background: #f9f9f9;
    padding: 15px;
    border-radius: 5px;
    margin-bottom: 20px;
}

.review-item {
    border-bottom: 1px solid #ddd;
    padding: 10px 0;
}

.review-rating {
    font-weight: bold;
    color: #ff9800;
}

.review-author, .review-date {
    font-size: 0.9em;
    color: #555;
}

.review-content {
    margin-top: 5px;
    font-size: 1em;
    color: #333;
}

Если вы используете темы Reboot или Root от WPShop, стилизация будет работать из коробки, но при необходимости вы можете расширить их.

Заключение по созданию динамических отзывов

Создание динамических отзывов с помощью Expert Review — это удобный и мощный способ повысить доверие посетителей и улучшить взаимодействие с сайтом. Используя встроенные возможности плагина и добавляя свои расширения через шорткоды и хуки, вы получаете полный контроль над выводом и обработкой отзывов.

Рекомендуется использовать уведомления и автоматические обновления рейтингов, чтобы администратор всегда был в курсе новых отзывов, а пользователи видели актуальную информацию. Не забывайте про стилизацию для соответствия дизайну сайта.

Как успешно использовать WPRemark для автоматизации обработки форм в WordPress
09.01.2026
Как удалить пустые категории в WordPress с помощью кода
06.01.2026
Как исправить ошибку WooCommerce «Невозможно создать заказ» при смене способа оплаты
28.04.2026
Как автоматизировать удалённую оптимизацию базы данных WordPress
13.04.2026
Как создать автоматический импорт продуктов в WordPress с помощью REST API
29.03.2026