Как полностью использовать все возможности плагина 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; ') ?></em> <?php if ( is_sticky() ) echo 'Прикреплено'; ?></p></p> <p> <div class="entry"><br /> <?php the_content('<br />Продолжить чтение &amp;rarr;'); ?><br /> <?php wp_link_pages(); ?><br /> <p class="post-comments"><br /> <?php comments_popup_link('Комментариев нет', 'Комментарий всего 1 &amp;#187;', 'Комментариев: % &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;r_sortby=highest_rated&amp;amp;r_orderby=desc') ?>или вставить переменные в URL
http://yoursite.com/?r_sortby=highest_rated&amp;amp;r_orderby=descгде вам нужно заменить desc на asc если вы хотите наименее оцененные записи.
Чтобы отсортировать наиболее/наименее оцениваемые записи,
вы можете использовать код в шаблоне<?php query_posts($query_string.'&amp;amp;r_sortby=most_rated&amp;amp;r_orderby=desc') ?>или вставить переменные в URL
http://yoursite.com/?r_sortby=most_rated&amp;amp;r_orderby=descгде вам нужно заменить desc на asc если вы хотите наименее оцененные записи
Связанные записи
2 комментария на запись “Как полностью использовать все возможности плагина WP-Postratings 1.40, с примерами”
Трэкбеки и пингбеки
- Плагин WP-Postratings | Blog.1Q1A.info
- Создание сайтов | Топ авторов по сумме рейтинга статей. WordPress