Оценка публикаций — мощный инструмент вовлечения аудитории и сбора обратной связи. В этой статье мы подробно разберём, как создать систему оценки статьи в WordPress, используя плагин WPRemark, а также добавим кастомные функции для расширения возможностей.
Почему стоит использовать WPRemark для оценки публикаций в WordPress
WPRemark — это современный плагин для создания отзывов, оценок и комментариев с гибкими настройками. Он позволяет легко внедрить различные виды оценок: звёздочки, баллы, смайлы и прочее. Благодаря интеграции с REST API и удобному интерфейсу, плагин подходит как для новичков, так и для продвинутых пользователей.
Основные преимущества WPRemark:
- Поддержка нескольких типов оценок (звезды, баллы, проценты);
- Возможность объединять оценки с комментариями;
- Настраиваемые шаблоны вывода;
- Интеграция с Gutenberg и классическим редактором;
- API для разработки собственных функций.
Все это делает WPRemark отличным выбором для создания оценки публикаций на вашем сайте.
Настройка WPRemark для оценки публикаций
Установка и базовая настройка
Для начала установите плагин WPRemark через админку WordPress: Плагины > Добавить новый > Поиск WPRemark > Установить > Активировать.
После активации перейдите в раздел WPRemark > Настройки и выберите тип оценки, который хотите использовать. Для публикаций обычно подходят звёздочки или баллы.
Добавление оценки на страницу публикации
WPRemark автоматически добавляет блок оценки в конце публикаций, но вы можете вставить оценку вручную в нужное место с помощью шорткода:
[wpremark_rating post_id="123"]Где post_id — ID публикации. Для динамической вставки можно использовать PHP-код в шаблоне темы:
<?php echo do_shortcode('[wpremark_rating post_id=' . get_the_ID() . ']'); ?>Расширение функционала: создание кастомного обработчика оценок
Иногда стандартных функций WPRemark недостаточно, и требуется доработать логику оценки. Например, реализуем подсчёт средней оценки с дополнительной фильтрацией по дате и пользователю.
Пример функции для получения средней оценки публикации
function wppolls_get_average_rating($post_id) {
global $wpdb;
$table = $wpdb->prefix . 'wpremark_ratings'; // Таблица с оценками
$query = $wpdb->prepare(
"SELECT AVG(rating) FROM $table WHERE post_id = %d",
$post_id
);
$average = $wpdb->get_var($query);
return $average ? round($average, 2) : 0;
}Эта функция обращается напрямую к базе данных WPRemark и возвращает среднее значение рейтинга для заданной публикации.
Вывод средней оценки в шаблоне публикации
<?php
$average_rating = wppolls_get_average_rating(get_the_ID());
echo '<div class="average-rating">Средняя оценка: ' . esc_html($average_rating) . '</div>';
?>Добавьте этот код в файл single.php вашей темы, чтобы отображать среднюю оценку под содержимым публикации.
Защита от накруток и улучшение UX
Запрет повторного голосования
WPRemark по умолчанию использует куки для ограничения повторного голосования, но можно усилить защиту, добавив проверку по IP и ID пользователя.
function wppolls_prevent_duplicate_vote($post_id, $user_id, $user_ip) {
global $wpdb;
$table = $wpdb->prefix . 'wpremark_ratings';
$query = $wpdb->prepare(
"SELECT COUNT(*) FROM $table WHERE post_id = %d AND (user_id = %d OR user_ip = %s)",
$post_id, $user_id, $user_ip
);
$count = $wpdb->get_var($query);
return $count > 0; // true если уже голосовал
}Вызывайте эту функцию перед сохранением новой оценки и блокируйте повторное голосование.
Улучшение интерфейса
Для повышения удобства пользователей можно добавить AJAX-голосование, чтобы оценка обновлялась без перезагрузки страницы. Для этого используйте встроенный REST API WPRemark или создайте собственный обработчик с помощью admin-ajax.php.
Пример AJAX-запроса для отправки оценки:
jQuery(document).ready(function($) {
$('.wpremark-rating-star').on('click', function() {
var rating = $(this).data('value');
var post_id = $(this).data('post');
$.ajax({
url: wpremark_ajax_object.ajax_url,
type: 'POST',
data: {
action: 'wppolls_submit_rating',
post_id: post_id,
rating: rating
},
success: function(response) {
alert('Спасибо за вашу оценку!');
// Обновить отображение рейтинга
}
});
});
});Не забудьте зарегистрировать обработчик в PHP:
add_action('wp_ajax_wppolls_submit_rating', 'wppolls_handle_ajax_rating');
add_action('wp_ajax_nopriv_wppolls_submit_rating', 'wppolls_handle_ajax_rating');
function wppolls_handle_ajax_rating() {
$post_id = intval($_POST['post_id']);
$rating = intval($_POST['rating']);
$user_id = get_current_user_id();
$user_ip = $_SERVER['REMOTE_ADDR'];
if (wppolls_prevent_duplicate_vote($post_id, $user_id, $user_ip)) {
wp_send_json_error('Вы уже голосовали.');
}
// Сохранение оценки через WPRemark API или вручную
// Пример с WPRemark:
if (function_exists('wpremark_save_rating')) {
wpremark_save_rating($post_id, $rating, $user_id, $user_ip);
wp_send_json_success('Оценка принята.');
} else {
wp_send_json_error('Ошибка сохранения оценки.');
}
wp_die();
}Дополнительные плагины для расширения оценки публикаций
Если WPRemark не покрывает все ваши задачи, рассмотрите следующие плагины для интеграции с оценками:
- Expert Review — мощный плагин для отзывов с оценками по нескольким критериям;
- WPRemark — если хотите расширить базовый функционал;
- JournalX — тема с интегрированными отзывами и рейтингами, если планируете смену дизайна.
Итоги
Создание оценки публикаций в WordPress с помощью WPRemark — это практичное и гибкое решение. Вы получаете удобный интерфейс для пользователей, подробную аналитику и возможность кастомизации под задачи проекта. Дополнительные доработки через код и AJAX обеспечат расширенный функционал и защиту от накруток. Используйте примеры из статьи, чтобы быстро внедрить и адаптировать систему оценки под свой сайт.