Хуки и хаки плагина WP-PostRating — убираем ошибки рейтинга

хаки и хуки плагина WP-PostRatings

Как я вижу, плагин WP-PostRatings пользуется большой популярностью среди блоггеров WordPress. Да и что греха таить, я сам питаю некоторую слабость к данному плагину и использую его во всех проектах на WordPress.

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

Хуки плагина WP-PostRatings

1. Важным функционалом плагина WP-PostRatings является подключение микроразметки к вашим постам. Благодаря именно этой микроразметке Google использует расширенный сниппет для ваших постов.

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

itemscope itemtype="http://schema.org/Article"

С помощью кода, добавленного в function.php:

add_filter('wp_postratings_schema_itemtype', 'wp_postratings_schema_itemtype');
function wp_postratings_schema_itemtype($itemtype) {
return 'itemscope itemtype="http://schema.org/Recipe"';
}

И так любой нужную вам сущность. Если же оставить строчку пустой:

return '';

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

С помощью данной функции вы уберёте из кода все дублирующие meta, которые могли уже быть указаны «выше» вручную или с помощью других плагинов (Yoast WordPress SEO, например)

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

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

3. Рейтинг плагина WP-Postratings предназначен для вывода рейтинга постов, используя стандартную функцию WordPress:

<?php the_post(); ?>

Вывести рейтинг рубрик или меток у вас не получится.

4. Для вывода рейтинга постов только в определенных рубриках используйте:

<?php if(function_exists('the_ratings') && in_category(xx) ) { the_ratings(); } ?>

где xx — id необходимой рубрики.

5. Стандартный вывод функции с возможность голосования и микроразметкой AggregateRating (если включена):

<?php if(function_exists('the_ratings')) { the_ratings(); } ?>

Для вывода рейтингов у каждого поста рубрики используйте код без возможности голосовать:

<?php if(function_exists('the_ratings')) { echo expand_ratings_template('%RATINGS_IMAGES%', get_the_ID()); } ?>

Данный код отключает возможность голосовать с главной страницы , со страниц рубрик или сквозных ссылок «последние материалы» в сайд-баре и убирает <meta> указания. Микроразметка AggregateRating дублироваться не будет.

Данный код устанавливается в место вывода рейтинга.

6. Многие обратили внимание, что при установке плагина WP-Postratings на блог, Google начал показывать ошибку сканирования 404 страниц:

/rating_over
/images

От данной проблемы можно избавиться, заменив часть кода в файле wp-postratings.php

if($postratings_custom) {
for($i = 1; $i < = $postratings_max; $i++) { $postratings_javascript .= 'var ratings_'.$i.'_mouseover_image=new Image();ratings_'.$i.'_mouseover_image.src=ratingsL10n.plugin_url+"/images/" +ratingsL10n.image+"/rating_'.$i.'_over."+ratingsL10n.image_ext;'; } } else { $postratings_javascript = 'var ratings_mouseover_image=new Image();ratings_mouseover_image.src=ratingsL10n.plugin_url+"/images/"+ratingsL10n.image +"/rating_over."+ratingsL10n.image_ext;'; }

на

if($postratings_custom) {
for($i = 1; $i < = $postratings_max; $i++) { $postratings_javascript .= 'var ratings_'.$i.'_mouseover_image=new Image();ratings_'.$i.'_mouseover_image.src="'.plugins_url().'/wp-postratings/images/"+ratingsL10n.image +"/rating_'.$i.'_over."+ratingsL10n.image_ext;'; } } else { $postratings_javascript = 'var ratings_mouseover_image=new Image();ratings_mouseover_image.src="'.plugins_url().'/wp-postratings/images/"+ratingsL10n.image+"/rating_over." +ratingsL10n.image_ext;'; }

Если какие-то проблемы не были озвучены в данной статье, если у вас свои собственные варианты, как реализовать тот или иной код, приглашаю вас в комментарии, будет разбираться вместе.

С уважением,
  1. Богдан

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

    Ответить
    • Максим

      Rating Option -> Allow To Rate -> Registered Users And Guests.
      Тогда голосовать смогут не только зарегистрированные пользователи, а всё.

      Ответить
  2. Seosko

    Не совсем понятно, а какую роль выполняет 6 пункт в вашей статье. То есть Google перестает индексировать новые страницы, или рейтинг на страницах не работает? Для чего менять данный код.

    Ответить
  3. Валерий

    Добрый день.
    А как убрать или изменить всплывающее сообщение при наведении на звёздочки, к примеру, для данной статьи при наведении высвечивается «44 оценки, среднее 4,66 из 5». Мне необходимо это убрать или изменить слово «оценки» на «голоса», а «среднее» на «средний балл».
    В «Шаблоны оценок» я поправил текст, но он не распространяется на данное сплывающее сообщение.

    Ответить
  4. Валерий

    С 6 проблемой я столкнулся в первый же день использования. Установленный у меня плагин «404 Error Logger» показал попытку загрузки /rating_over и /images. Я вроде как исправил руководствуясь вашими рекомендациями код, но что-то он не очень сработал, а может я не совсем корректно внёс изменения? Ссылка на мной модифицированный фаил http://www.mediafire.com/file/94bh8co2856att1/wp-postratings.php (ещё я там отключил внедрение jQuery(я его подключил ранее), CSS, переключил звёзды на png)
    В итоге после внесения изменений я обнаружил в логе плагина «404 Error Logger» попытку доступа к /rating_over, и только к ней. Куда пропала /images мне было неведомо, пока я не посмотрел логи сервера. Гугл попытался зайти в папку images плагина и сервер эту попытку присёк и в ответ выдал 403 ошибку, что тоже плохо…
    Я бы хотел это исправить, я нагуглил данную рекомендацию https://wordpress.org/support/topic/heres-code-for-a-small-seo-fixup/ , но она была добавлена 3 года назад и до сих пор не внедрена разработчиком. Может вы посмотрите, возможно ли внедрение в актуальный код?
    Или если ваш вариант столь же действенен, и я просто ошибся, то укажите пожалуйста на ошибку.

    Ответить
    • Максим

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

      Ответить
      • Валерий

        Спасибо за ответ.
        Если бы я основательно не озадачился этим вопросом, то тоже бы так решил.
        Однако ошибки это всегда плохо. Если в Google вбить запрос «/rating_over» , то можно ужаснуться тысячам проиндексированных 404 страниц у совершенно разных сайтов.
        Я описал проблему разработчику https://wordpress.org/support/topic/googlebot-errors-404-rating_over-and-images/ — он ссылается на то, что не специалист в SEO (хотя причём тут это вообще!?).
        Проблему он решать не желает. В обсуждении приведено решение, которое мне предложили на JS форуме, но я его не проверял т.к. ограничился решением через robots.txt:
        User-agent: *
        Disallow: /images/
        Disallow: /rating_over*

        Однако решение через robots.txt мне не очень нравится т.к. правило /images/ очень уж общее. В структуре моего сайта такового пути нет, а у кого нибудь, да будет.

        Неравнодушные могут написать на форум разработчику, может он всё же обратит внимание на проблему.

        Ответить
        • Максим

          К сожалению, не все идеально, и не все разработчики готовы прислушиваться к просьбам пользователей. Данные страницы, по сути, не нужно закрыть через robots, ведь их нет на сайте, следовательно, они отдают ответ 404. По факту, это всего лишь ссылка в коде, ведущая на несуществующую страницу, не более чем.

          Ответить
  5. Андрей

    Добрый день!
    Подскажите как можно реализовать рейтинг записей по нескольким параметрам. Т.е. допустим у каждой записи есть 5 параметров для оценки: интересность, практичность, оформление, качество и т.д. и т.п. Необходимо чтобы пользователь мог оценивать любой из этих параметров по пятибалльной шкале. А я в любом месте мог вывести либо среднюю оценку записи, либо оценку по определенному параметру. А так же мог создавать архивы самых интересных записей, либо отсортировать записи по параметру практичности и т.д.

    Ответить
    • Максим

      С помощью данного плагина вы не сможете реализовать подобный функционал, нужно искать другое решение.

      Ответить
      • Андрей

        может подтолкнёте в нужном направлении

        Ответить
        • Максим

          К сожалению, я не применял таких скриптов.

          Ответить
  6. Марина

    Здравствуйте. Хотела установить этот плагин, чтобы удовлетворить желание валидатора микроразметки от гугл по внесению aggregateRating. Но, именно этот пункт похоже убран из плагина. Поставила флажок на «Включить расширенные описания страниц от Google?», но это не дало желаемого результата. Подскажите, возможно ли исправить ситуацию?

    Ответить
    • Максим

      Данный плагин автоматически добавляет микроразметку после установки флажка, проверьте ещё через сервис Google, возможно кэширование на сайте сработало?

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *