Как полностью использовать все возможности плагина WP-Postratings 1.40, с примерами

Это конечно все в принципе написано в реадми на «ангельском» языке, но туда обычно никто не смотрит, либо не до конца понимает суть. Рассмотрим детально с примерами использования. Если вы еще этого не сделали, то скачайте плагин здесь (в PowerPack сборках 2.7* он также есть)

Как вставить в шаблон блок для рейтингов
Найдите в ваших файлах шаблона (index.php, post.php, page.php и некоторых других в некоторых «темах»)
строку вида

<?php while (have_posts()) : the_post(); ?> 

Добавьте где нибудь ниже, в том месте где будете выводить блок, код

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

Например вот как это сделано у меня:

<?php while (have_posts()) : the_post(); ?></p>
<p>			<div class="post"><br />
				<h2 class="post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2><br />
				<p class="post-info"> <em class="date"><?php the_time('j F Y в G:i'); ?></em><em class="user"><?php the_author_posts_link() ?></em><em class="cat"><?php the_category(' &amp;amp; ') ?></em> <?php if ( is_sticky() ) echo 'Прикреплено'; ?></p></p>
<p>				<div class="entry"><br />
					<?php the_content('<br />Продолжить чтение &amp;amp;rarr;'); ?><br />
					<?php wp_link_pages(); ?><br />
					<p class="post-comments"><br />
					<?php comments_popup_link('Комментариев нет', 'Комментарий всего 1 &amp;amp;#187;', 'Комментариев: % &amp;amp;#187;'); ?> </p><br />
<p class="post-tags"><?php the_tags('Метки: ', ', ', '<br />');?></p><br />
<?php if(function_exists('the_ratings')) { the_ratings(); } ?><br />
				</div><br />
			</div><br />
			<?php endwhile; ?><br />
			<?php else : ?><br />
				<p>:-)</p></p>
<p>		<?php endif; ?>

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

[ ratings ]

в тексте записи (в указанных кодах уберите пробелы возле скобок, если будете копировать отсюда)

Если вы хотите в текст записи поместить рейтинг другой записи, то используйте код

[ ratings id="1" ]

, где 1 — ID нужной записи/страницы, рейтинг которой вы показываете (в указанных кодах уберите пробелы возле скобок, если будете копировать отсюда)

Если вы хотите в текст записи поместить результаты рейтинга другой записи, то используйте код

[ ratings id="1" results="true" ]

, где 1 — ID нужной записи/страницы, рейтинг которой вы показываете (в указанных кодах уберите пробелы возле скобок, если будете копировать отсюда)

Как показать рейтинг, выставленный за пост комментатором в плагине WP-Postratings 1.40

В версии плагина 1.31 (для WordPress 2.6*) все было просто — вставлялся определенный код в нужное место шаблона комментариев и все. В новой версии это перестало работать (хотя на функцию в шаблоне «не ругалось»). В новой версии стало все немного неудобно:

Нужно открыть файл wp-postratings.php
Найти строку 393

//add_filter('comment_text', 'comment_author_ratings_filter');

и раскомментировать ее (убрать //)
Далее найти блок, начиная со строки 424 (

<br />
$output .= '<div class="post-ratings-comment-author">';<br />
			if($post_ratings_images != '') {<br />
				$output .= get_comment_author().' ratings for this post: '.$post_ratings_images;<br />
			} else {<br />
				$output .= get_comment_author().' did not rate this post.';<br />
			}<br />
			$output .= '</div>';</p>
<p>

)

где

$output .= get_comment_author().' ratings for this post: '.$post_ratings_images;

— это то что выводится, если комментатор проголосовал и

$output .= get_comment_author().' did not rate this post.';

— если он не проголосовал.

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

Например я сделал так:

$output .= '<div class="post-ratings-comment-author">';<br />
			if($post_ratings_images != '') {<br />
				$output .= $post_ratings_images;<br />
			} else {<br />
				$output .= '';<br />
			}<br />
			$output .= '</div>';

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

также если открыть файл postratings-css.css и найти там блок

.post-ratings-comment-author {<br />
	font-weight: normal;<br />
	font-style: italic;<br />
}

то можно изменить стиль этого блока, где выводится рейтинг. Если вы не хотите ковырять файл стилей плагина — создайте файл с таким же названием в папке вашей темы (он имеет приоритет) и создайте в ней точно такой же стиль (можно просто скопировать файл из папки плагина и изменить под себя).

Как использовать PNG картинки вместо GIF
Откройте файл wp-postratings.php и найдите там блок кода

define('RATINGS_IMG_EXT', 'gif');<br />
//define('RATINGS_IMG_EXT', 'png');<br />

замените его на

//define('RATINGS_IMG_EXT', 'gif');<br />
define('RATINGS_IMG_EXT', 'png');

В InternetExplorer версий 5, 5.5, 6 иногда получается так что текст возле рейтингов выглядит «страшно», а точнее получается «контрастная обводка вокруг символов» (это же относится и к плагину WP-Polls). Причем баг этот не всегда виден, т.е. на одном компьютере в IE6 он будет виден, а на другом будет все нормально, но лучше сделать маленький хак, который заложен уже автором плагина.

Решается все тривиально просто:
Открываем postratings-css.css и находим там строку

/* background-color: #ffffff; */ 

Раскомментируем ее и заменяем (если требуется) цвет, где цвет — это цвет вашего фона страницы/блока где выводится рейтинг. #FFFFFF — это белый (на всякий случай, если кто не в курсе), т.е. в общем случае (если у вас фон страниц белый), то получится

background-color: #ffffff; 

Обновляем страницу в браузере и радуемся.

Как вывести записи с самым низким рейтингом
В нужно месте шаблона (вне блока вывода (LOOP)) вставляем код

<?php if (function_exists('get_lowest_rated')): ?><br />
   <ul><br />
      <?php get_lowest_rated(); ?><br />
   </ul><br />
<?php endif; ?> 

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

get_lowest_rated('both', 0, 10)<br />

покажет 10 самых нерейтинговых записей и страниц, у которых даже нет голосов.
Первый параметр может иметь значения both, post и page, т.е. выводить ВСЕ, ТОЛЬКО ЗАПИСИ, ТОЛЬКО СТРАНИЦЫ
Второй параметр (в данном случае равный 0) — количество голосов для отбора
Третий параметр (в данном случае равный 10) — количество позиций
(запомните это — во всех других рейтингах все аналогично, если встатите в конструкции запроса аналогичные параметры)
Т.е. если мы сделаем вывод

get_lowest_rated('post', 5, 20)<br />

то получим 20 самых нерейтинговых записей у которых есть уже как минимум 5 голосов (грубо говоря если за запись проголосовали 5 раз с низкими рейтингами то она «попадет в этот топ», если конечно не найдется другая запись с худшим рейтингом

В продолжение: Как вывести записи с самым низким рейтингом, но только из заданных рубрик

<?php if (function_exists('get_lowest_rated_category')): ?><br />
   <ul><br />
      <?php get_lowest_rated_category(CATEGORY_ID); ?><br />
   </ul><br />
<?php endif; ?> 

запрос также можно изменять по шаблону

get_lowest_rated_category(CATEGORY_ID, 'both', 0, 10)

где CATEGORY_ID — ID вашей рубрики или массива нескольких рубрик. Если рубрика одна, то пишем просто к примеру цифру 2, но если рубрик несколько, то пишем array(1, 2) — т.е. рубрики 1 и 2

Остальные параметры аналигичны рассмотренным выше

Например

<?php if (function_exists('get_lowest_rated_category')): ?><br />
   <ul><br />
      <?php get_lowest_rated_category(array(4, 33, 11), 'post', 6, 5); ?><br />
   </ul><br />
<?php endif; ?>

выведет 5 позиций, за каждую из которых оставили как минимум 6 голосов и которые присутствуют только в рубриках с ID 4, 33 или 11

Как вывести записи с высоким рейтингом

<?php if (function_exists('get_highest_rated')): ?><br />
   <ul><br />
      <?php get_highest_rated(); ?><br />
   </ul><br />
<?php endif; ?> 

Тут все аналогично

get_highest_rated('both', 0, 10)

— задаем тип записей, количество голосов и количество записей для отбора

В продолжение: Как вывести записи с высоким рейтингом, но только из заданных рубрик

<?php if (function_exists('get_highest_rated_category')): ?><br />
   <ul><br />
      <?php get_highest_rated_category(CATEGORY_ID); ?><br />
   </ul><br />
<?php endif; ?> 

полностью конструкция запроса повторяет рассмотренную выше «с низким»

Как вывести список записей с высоким рейтингом за заданный период

<?php if (function_exists('get_highest_rated_range')): ?><br />
   <ul><br />
      <?php get_highest_rated_range('1 day'); ?><br />
   </ul><br />
<?php endif; ?> 

где можно поиграть с параметрами

get_highest_rated_range('1 day', 'both', 10)

первый параметр это срок, т.е. количество дней, месяцев. лет. Может принимать значения к примеру: ‘5 days’, ‘1 month’ и т.д., второй параметр мы рассматривали выше, а третий это количество позиций

Как вывести записи, за которые чаще всего голосовали

<?php if (function_exists('get_most_rated')): ?><br />
   <ul><br />
      <?php get_most_rated(); ?><br />
   </ul><br />
<?php endif; ?> 

get_most_rated('both', 0, 10)

— также все просто: 1 параметр — тип записей, 2 параметр — количество голосов, 3 параметр — количество записей.
Например запрос

get_most_rated('both', 40, 50)

должен вывести 50 записей, за которые оставили как минимум 40 голосов

В продолжение: Как вывести записи, за которые чаще всего голосовали из определенных рубрик

<?php if (function_exists('get_most_rated_category')): ?><br />
   <ul><br />
      <?php get_most_rated_category(CATEGORY_ID); ?><br />
   </ul><br />
<?php endif; ?> 

get_most_rated_category(CATEGORY_ID, 'both', 0, 10)

— параметры запроса аналогичные тем, что описаны выше в похожих функциях

Как вывести записи, за которые чаще всего голосовали за определенный период

get_most_rated_range('1 day', 'both', 10)

— аналогично функции, рассмотренной выше, только там выводится список с высоким рейтингом, а здесь просто с большим количеством голосов

а вот что делать с этим я так и не понял….

Чтобы отсортировать записи с наибольшим/наименьшим рейтингом,
вы можете использовать код в шаблоне

<?php query_posts($query_string.'&amp;amp;amp;r_sortby=highest_rated&amp;amp;amp;r_orderby=desc') ?> 

или вставить переменные в URL

http://yoursite.com/?r_sortby=highest_rated&amp;amp;amp;r_orderby=desc 

где вам нужно заменить desc на asc если вы хотите наименее оцененные записи.

Чтобы отсортировать наиболее/наименее оцениваемые записи,
вы можете использовать код в шаблоне

<?php query_posts($query_string.'&amp;amp;amp;r_sortby=most_rated&amp;amp;amp;r_orderby=desc') ?> 

или вставить переменные в URL

http://yoursite.com/?r_sortby=most_rated&amp;amp;amp;r_orderby=desc 

где вам нужно заменить desc на asc если вы хотите наименее оцененные записи

Связанные записи

2 комментария на запись “Как полностью использовать все возможности плагина WP-Postratings 1.40, с примерами”

Трэкбеки и пингбеки

  1. Плагин WP-Postratings | Blog.1Q1A.info
  2. Создание сайтов | Топ авторов по сумме рейтинга статей. WordPress