Как добавить рейтинг записей к комментариям WordPress
Віталий
Доброго времени суток. 🙂
В этой статье хочу рассказать вам, как добавить систему оценки статей через комментарии WordPress без плагина. Суть такого рейтинга в том, что каждый, кто оставляет на сайте комментарий через стандартную форму WordPress, так же ставит оценку по пятизвездочной системе. Рядом с комментарием публикуется и оценка комментатора.
У меня на сайте была схожая статья с рейтингом, но там общая система оценки, любой посетитель просто нажимает на звезды, выставляя оценку материалу. Такая система установлена и на моем сайте. Более подробно в статье - Рейтинг записей WordPress без плагина звездами.
В данном случаи, как я написал выше, мы будем получать оценку от каждого комментатора. Их оценка будет видна возле комментария. Так же бонусом, я покажу как вывести общую оценку от из всех комментариев. Так что давайте приступим к выполнению задуманного.
Я предлагаю добавить код функций будущего рейтинга прямо в файл функций function.php. Вы, если хорошо знакомы с WordPress, можете сделать плагин - Как создать плагин для WordPress, или вынести функции в отдельный файл, а потом его уже подключить в function.php, если вам так удобнее.
Добавить надо следующий код нужно в самый конец перед закрывающим тегом PHP ?>. Если его нет, то просто в самый конец.
Перед изменением function.php, обязательно сохраните его копию, чтобы в дальнейшем, в случаи ошибки, вернуть все как было.
Код разбит комментариями, за что отвечает каждая его часть.
//Добавляем рейтинг к комментариям - эта часть кода, добавит в вашу форму комментариев рейтинг. Изначально это просто радио кнопки. Чтобы они превратились в звезды, понадобится еще несколько моментов.
//Сохраняем результат - данная функция, сохраняет результат голосования от комментатора.
//Обязательность рейтинга - эта функция делает наш рейтинг обязательным. Если комментатор не выставит оценку, комментарий не будет отправлен. Если это вам не нужно, то не добавляйте эту часть кода, а так же в самой первой части, можете удалить код - <span class="required">*</span> По-умолчанию, в комментариях WordPress, звездочка означает обязательность заполнения. Если у вас не так, можете поменять.
//Выводим рейтинг в опубликованном комментарии - данная функция выводит рейтинг в опубликованном комментарии. То бишь результат.
//Подключаем стили dashicons - данная функция подключает вшитые в WordPress стили шрифта dashicons. Благодаря ему наши радио кнопки и превратятся в звезды. Но чтобы шрифт заработал, нужен еще один шаг.
Чтобы рейтинг красиво отобразился, ему нужно добавить CSS стили. Можете добавить их в свой файл стилей или в отдельный, а потом его подключить, в общим, как вам удобно.
На этом этапе, ваш рейтинг уже будет работать и каждый комментатор сможет оставить свою оценку материалу. В форме комментариев это будет выглядеть так:
После публикации комментария рейтинг будет выглядеть так:
Стили можете править под себя и менять внешний вид звезд как вам угодно.
Теперь хочу показать как сделать общую оценку взятую из всех комментариев и выведенную перед контентом, то бишь перед текстом статьи. Для этого вам нужно добавить псоле уже добавленных выше функций, еще парочку:
//Подсчет общей оценки - эта функция вычисляет среднюю оценку.
// Вывод оценки перед постом - то что получилось выводит перед контентом.
Выводится будет только перед контентом. Выглядеть оно будет примерно так:
Если вас это не устраивает, вы хотите выводить где-то в своем месте, то можете вместо последней функции, добавить немного измененную, которую нужно вызывать в нужном месте.
Что-бы вызвать данную функцию, то есть запустить ее, в нужном вам месте, внутри цикла добавьте такую строку:
comm_rating_display_average_rating();
Данная строка помещается в среду PHP, если у вас HTML, то нужно заключить строку в теги PHP, выглядеть она будет так:
<?php comm_rating_display_average_rating(); ?>
В том месте где вы разместите эту строку, там и появится рейтинг.
Данная система рейтинга по своему интересна и имеет право на существование. С ее помощью можно добиться более точной оценки материала, а в месте с ней и комментарий человека, что ему понравилось или нет в вашем материале.
Важно упомянуть, что данный рейтинг не выводит пустых звезд, то бишь если человек поставит одну звезду, то будет выводится всего лишь 1 звезда, после нее еще 4х пустых не будет.