Как правильнее хранить общий рейтинг материала на основании рейтинга комментариев в Wordpress?

Есть система отзывов, которая представляет из себя обычные комментарии с 3 доп полями для оценки (каждый параметр можно оценить на максимум 5 звезд). У поста есть 4 рейтинга, средний рейтинг по этим трем параметрам из комментариев и общий рейтинг, который является средним арифметическим этих трех.

Для наглядности:
Post #1
--Удобство
--Качество
--Цена
--Общий рейтинг

Общий рейтинг = (Удобство + Качество + Цена) / 3

Удобство, Качество и Цена собираются из соответствующих полей в комментариях (берем для каждого поста функцией get_comments() все комментарии, прогоняем по циклу, суммируем все параметры и делим на кол-во комментов).

Это что касается расчетов. Что я делаю сейчас. В самом single.php у меня как раз и производятся эти действия:

$comments  = get_comments(array(
						'post__in' => $post->ID));
					$comments_count = 0;
					$price = 0;
					$quality = 0;
					$service = 0;
					foreach ($comments as $comment) {
						$comment_id = $comment->comment_ID;
						$price_rating = (int)get_comment_meta( $comment_id, 'price_rating', true );
						$quality_rating = (int)get_comment_meta( $comment_id, 'quality_rating', true );
						$service_rating = (int)get_comment_meta( $comment_id, 'service_rating', true );
						$price +=$price_rating;
						$quality +=$quality_rating;
						$service +=$service_rating;
						$comments_count++;
					}

					// Average ratings
					$price_rating = ($comments_count > 0) ? $price/$comments_count : 0;
					$quality_rating = ($comments_count > 0) ? $quality/$comments_count : 0;
					$service_rating = ($comments_count > 0) ? $service/$comments_count : 0;

					$overall_rating = ($price_rating+$quality_rating+$service_rating) / 3;


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

Но у меня этот рейтинг должен показываться еще и в короткой новости. По сему я хочу этот рейтинг хранить, то есть при добавлении комментария, крепиться к хуку и обновлять общий рейтинг поста. Правильно ли это или эту задачу нужно решать иначе?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
entity1313
@entity1313
Веб-разработчик, проект-менеджер
Почему бы не записать рейтинг в мету записи и обновлять по приходу нового комментария, отслеживая экшен comment_post?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы