Плагин Related Posts by Category для WordPress
Плагин Related Posts by Category для WordPress — это именно та фишка, которую я давно искал.
Про «похожие посты» знают многие пользователи WordPress. Это и в плане seo полезно, и читателям тоже есть куда заглянуть и полазать по блогу.
Однако все, ранее появлявшиеся, плагины что-то не торкали. То они не находят связанных постов, то выдают одно и то же. Принцип действия данных плагинов основан на поиске ключевых слов из контекста или тупо по привязке к тэгам.
Однако на мой взгляд наиболее правильный подход — это связанность постов по категориям (рубрикам), в которых они размещены. Это логично.
Сначала я нашел вот этот пост у dimox-а: Отличный способ внутренней перелинковки статей (для WordPress). Там плагин вообще не используется. Код пишется прямо в файле single.php или в index.php, если нет первого.
Все вроде ништяк. Однако со временем заметил одну неприятную особенность: комменты от одного поста странным образом лепились к другому.
В комментариях к указанной статье об этом тоже было упомянуто. Баг вроде должен был исчезнуть после некоторых манипуляций с кодом, но так и не исчез.
Зато теперь я нашел этот плагин Related Posts by Category, который удовлетворил меня на все 100. Для его работы достаточно в файле single.php перед выводом комментов добавить следующий кусок кода:
<div class="relatedpost">
<h3>Похожие записи</h3>
<ul>
<?php do_action(
'related_posts_by_category',
array(
'orderby' => 'RAND',
'order' => 'DESC',
'limit' => 5,
'echo' => true,
'before' => '<li>',
'inside' => '» ',
'outside' => '',
'after' => '</li>',
'rel' => 'nofollow',
'type' => 'post',
'image' => 'thumbnail',
'message' => 'No matches'
)
) ?>
</ul>
</div>
Теперь все работает отлично, в чем вы можете убедиться сами, посмотрев на список похожих записей к этому посту. И комменты все на своих местах.
Как видите, в самом коде есть возможность выставить некоторые настройки. В частности: количество выводимых заголовков limit, скрыть от Гугла nofollow, если ничего нет, то вывести соответствующее сообщение (message) и пр.
UPD от 30.09.2018: К сожалению, плагин автором больше не поддерживается. Да и способов вывода похожих записей с тех пор появилось немало, в том числе и без плагинов вовсе. Лично я сейчас использую вот такой код на Вебсовете:
<?php
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'orderby'=>rand,
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"> <?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
wp_reset_query();
}
?>
Здесь 'showposts'=>5, означает количество выводимых ссылок, а 'orderby'=>rand, — случайный вывод ссылок из данной рубрики. То есть, при перезагрузке страницы скрипт выведет другой набор ссылок. Это гораздо интереснее, не так ли?
Удачи!