Приветствую.
Рейтинг теперь великолепен во всех отношениях и я не вижу конкурента прямого.
Но остался один момент и как его реализовать можно пока не соображу. Что бы конкурентов не осталось.
Сам по себе звездный рейтинг был сделан под сниппеты в пс и отсюда в нем используется микроразметка разных типов. Рецепты, книга, статья и тд. Конечно понимание их яндексом и гуглом слегка различается скажем в публикациях, но можно сделать интернациональную, дабы не пихать туда еще 100500 данных по автору.
Продвинутые топовые плагины дают фильтр на смену разметки, например в wp-postratings
<?php add_filter( 'wp_postratings_schema_itemtype', 'wp_postratings_schema_itemtype' ); function wp_postratings_schema_itemtype( $itemtype ) { return 'itemscope itemtype="http://schema.org/Recipe"'; } ?>
Но у них косяк, меняя тип рейтинга, надо и составляющие некоторые поменять иначе яндекс упрется. Единственную схему удалось сделать интернациональной мне, это Book. Конечно проверить надо еще и еще.
Хотя можно без фильтра и давая просто вписать тип схемы.
И отсюда вопрос, имеет смысл мне сейчас потестить разметку и планируется такое внедрить или индивидуально сие останется?
Оба варианта хороши))
Вот так вроде ошибок не показывают валидаторы.
function get_html_stars($args){ $title = ($this->user_vote)? __('Cancel vote','wp-recall'): __('Vote','wp-recall'); $classes = array('stars-wrapper'); if($this->user_can['vote']){ $classes[] = $this->user_vote? 'user-vote': 'must-vote'; } $content = '<span itemscope="" itemtype="http://schema.org/AggregateRating"><span class="'.(implode(' ',$classes)).'">'; $content .= '<meta itemprop="name" content="Название статьи">'; $content .= '<meta itemprop="itemReviewed" content="Название статьи">'; $content .= '<meta itemprop="description" name="description" content="Описание- на будущие">'; $content .= '<meta itemprop="bestRating" content="5">'; $content .= '<meta itemprop="ratingValue" content="5">'; $content .= '<meta itemprop="ratingCount" content="2">'; for($a = 1; $a <= $this->item_count; $a ++){ $itemValue = round($a * $args['item_value'], 1); if($itemValue == $args['average_rating'] || $itemValue < $args['average_rating']){ $procent = 100; }else if(!$args['rating_value'] || round(($itemValue - $args['item_value']),1) >= $args['average_rating']){ $procent = 0; }else{ $procent = round($args['average_rating'] - $itemValue, 1) * 100 / $args['item_value']; if($procent < 0) $procent += 100; } $stars = '<span class="fa fa-star stars__out" aria-hidden="true">' . '<span class="fa fa-star stars__in" style="width:'.$procent.'%;" aria-hidden="true"></span>' . '</span>'; if($this->user_can['vote']){ $content .= '<span class="'.$this->get_class_vote_button('star').' vote-star" data-value="'.$itemValue.'" data-rating="'.$this->get_encode_string('plus', $itemValue).'" onclick="rcl_edit_rating(this);" title="'.$title.'">' . $stars . '</span>'; }else{ $content .= '<span class="vote-star" data-value="'.$itemValue.'">' . $stars . '</span>'; } } $content .= '</span></span>'; return $content; } }
Но конечно я поля не заполнил))
Два к статье и
itemprop="ratingCount" для обозначения количества оценок
itemprop="ratingValue" – сама оценка
itemprop="bestRating" – максимальное значение рейтинга
Тестил кучу типов и вариантов, совместить гугл и яндекс мего трудно. Суть в том, что еще учесть кто какую разметку использует в целом, плюс плагины для этого дела и тд, беда))
А этот вариант интернационален, по крайней мере пока не вижу другого.
Если делать Article тип, то там еще 100500 полей и кучу всего учитывать и будет монстр.))
Мето теги я привел только пока тестил и забыл тут поменять на span поля на свои места расставить можно и не надо в head, а ту всю страницу зацепим. Только блок рейтинга, сорри.
Сразу можно туда, где это выводиться или определяется и все.
Эти поля можно выводить в любом теге, внутри него и обработчики пс их найдут о поймут. Можно как сейчас оставить, но все внутри блока рейтинга. Сначала тип рейтинга
(в данном случаи) со всеми определениями и потом уже что он включает.
Андрей CS сказал(а)
ну а разве не это требуется - сообщить поисковикам о рейтинге текущей страницы? проверим, есть ли у страницы рейтинг и используются ли для него звезды и выводим метатеги, вроде логично.
так - а если рейтинг у комментариев тоже звезды будут?
Или блок отзывов будет где будет 3-4 варианта с рейтингом звездами по типу этого
Игорь, смотрю на верстку предложенную тобой, возник вопрос: обязательно помещать верстку звезд внутрь тега
<span itemscope="" itemtype="http://schema.org/AggregateRating">
?
Например, так сделать нельзя?
<span class="stars-wrapper"> <span itemscope="" itemtype="http://schema.org/AggregateRating"> <meta itemprop="name" content="WP Pay Access"> <meta itemprop="itemReviewed" content="WP Pay Access"> <meta itemprop="bestRating" content="5"> <meta itemprop="ratingValue" content="4.6"> <meta itemprop="ratingCount" content="26"> </span> <span class="vote-star" data-value="1"> <span class="fa fa-star stars__out" aria-hidden="true"> <span class="fa fa-star stars__in" style="width:100%;" aria-hidden="true"></span> </span> </span> <span class="vote-star" data-value="2"> <span class="fa fa-star stars__out" aria-hidden="true"> <span class="fa fa-star stars__in" style="width:100%;" aria-hidden="true"></span> </span> </span> <span class="vote-star" data-value="3"> <span class="fa fa-star stars__out" aria-hidden="true"> <span class="fa fa-star stars__in" style="width:100%;" aria-hidden="true"></span> </span> </span> <span class="vote-star" data-value="4"> <span class="fa fa-star stars__out" aria-hidden="true"> <span class="fa fa-star stars__in" style="width:100%;" aria-hidden="true"></span> </span> </span> <span class="vote-star" data-value="5"> <span class="fa fa-star stars__out" aria-hidden="true"> <span class="fa fa-star stars__in" style="width:60%;" aria-hidden="true"></span> </span> </span> </span>
Андрей CS сказал(а)
Например, так сделать нельзя?
Андрей, абсолютно куда угодно, главное внутри блока в нашем случаи, что бы не снести разметку пользователя выставленную для других типов под сайт.
Я просто пока тестил, для удобства своего так сделал, подставляя параметры всякие...
Отличный вариант твой и дальше можно будет при потребностях его в таком виде развить под любые типы и поля.
Внутри блока, имел ввиду:
<span itemscope="" itemtype="http://schema.org/AggregateRating"> </span>
PS
Пришло уведомление о ответе в теме этой и без ссылки на пост.