Как вывести оценки пользователей в WordPress с помощью плагинов и кода

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

Почему важно выводить оценки пользователей в WordPress

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

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

Популярные плагины для системы оценок в WordPress

WP Review Pro

Плагин WP Review Pro — мощное решение для добавления отзывов и рейтингов. Поддерживает несколько типов оценок: звёзды, баллы, проценты. Позволяет выводить оценки в сниппетах Google и кастомизировать дизайн.

Плагин прост в использовании, есть интеграция с WooCommerce и популярными темами.

Rating-Widget: Star Review System

Ещё один популярный плагин — Rating-Widget. Он позволяет вставлять звёздные оценки на страницы, записи, комментарии и даже в sidebar. Плагин бесплатный с платным расширением для дополнительных функций.

Как выбрать плагин

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

Как вывести оценки пользователей без плагинов: пример кода

Если вы хотите реализовать систему оценок самостоятельно, можно хранить оценки в мета-полях поста и выводить их с помощью шорткодов и AJAX-запросов.

Создание мета-поля для оценки

Для начала добавим кастомное поле, где будем хранить средний рейтинг и количество голосов.

function wpone_add_rating_meta($post_id, $rating) {
  $ratings = get_post_meta($post_id, '_wpone_ratings', true);
  if (!$ratings) {
    $ratings = ['count' => 0, 'sum' => 0];
  }
  $ratings['count']++;
  $ratings['sum'] += intval($rating);
  update_post_meta($post_id, '_wpone_ratings', $ratings);
}

Функция для получения среднего рейтинга

function wpone_get_average_rating($post_id) {
  $ratings = get_post_meta($post_id, '_wpone_ratings', true);
  if (!$ratings || $ratings['count'] == 0) return 0;
  return round($ratings['sum'] / $ratings['count'], 1);
}

Вывод рейтинга на страницу поста

Добавим шорткод [wpone_rating], который выведет текущий средний рейтинг и форму для голосования.

function wpone_rating_shortcode($atts) {
  global $post;
  $avg = wpone_get_average_rating($post->ID);
  ob_start();
  ?>
  <div id="wpone-rating" data-postid="<?php echo $post->ID; ?>">
    <p>Средний рейтинг: <strong><span id="wpone-average"><?php echo $avg; ?></span></strong> из 5</p>
    <label>Оцените:</label>
    <select id="wpone-user-rating">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
    </select>
    <button id="wpone-submit-rating">Оценить</button>
  </div>
  <script>
  document.getElementById('wpone-submit-rating').addEventListener('click', function() {
    var rating = document.getElementById('wpone-user-rating').value;
    var postId = document.getElementById('wpone-rating').getAttribute('data-postid');
    fetch('<?php echo admin_url('admin-ajax.php'); ?>?action=wpone_save_rating&post_id=' + postId + '&rating=' + rating)
      .then(response => response.json())
      .then(data => {
        if(data.success) {
          document.getElementById('wpone-average').textContent = data.average;
          alert('Спасибо за оценку!');
        } else {
          alert('Ошибка: ' + data.message);
        }
      });
  });
  </script>
  <?php
  return ob_get_clean();
}
add_shortcode('wpone_rating', 'wpone_rating_shortcode');

Обработка AJAX-запроса для сохранения оценки

function wpone_ajax_save_rating() {
  $post_id = intval($_GET['post_id']);
  $rating = intval($_GET['rating']);
  if ($post_id > 0 && $rating >= 1 && $rating <= 5) {
    wpone_add_rating_meta($post_id, $rating);
    $average = wpone_get_average_rating($post_id);
    wp_send_json_success(['average' => $average]);
  } else {
    wp_send_json_error(['message' => 'Неверные параметры']);
  }
}
add_action('wp_ajax_wpone_save_rating', 'wpone_ajax_save_rating');
add_action('wp_ajax_nopriv_wpone_save_rating', 'wpone_ajax_save_rating');

Дополнительные советы по реализации системы оценок

Защита от повторных голосований

Чтобы избежать накруток, можно сохранять ID пользователя или IP-адрес в cookie и проверять перед добавлением новой оценки. Для более серьёзных проектов стоит использовать авторизацию и хранить оценки в отдельной таблице.

Кастомизация внешнего вида

Вывод рейтинга можно оформить через CSS и SVG-иконки. Также удобно использовать JavaScript-библиотеки для звёздного рейтинга, например, Starability или RateYo.

Интеграция с другими плагинами

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

Вывод

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

Как удалить бесполезные мета данные из базы WordPress без потерь
12.01.2026
Как использовать метаданные в WordPress для уникального контента
01.02.2026
Как использовать WPONE REST API для получения данных и мета пользователя в WordPress
26.01.2026
Как использовать WP-Cron для автоматизации задач в WordPress
01.12.2025
Как удалить бесполезные CSS и JS в WordPress для ускорения сайта
22.02.2026