Похожие записи в WordPress без плагинов

Для того, чтобы уменьшить процент отказов на блоге, нужно «заставить читателя» оставаться на блоге как можно больше времени. Лучшим способом для этого является вывод похожих статей, просматривая которые, читатель выполняет нашу заветную цель.

Для WordPress написано множество плагинов, которые позволяют выводить похожие записи.
К примеру, WP Related Post выводит записи везде, где вы укажете специальным кодом. Но плагин выдает 13 запросов к базе, чем ужасно грузит БД.
Плагин Simple Tags также выводит внизу странички тематические статьи, но ввиду своей громоздкости потребляет много ресурсов.
Плагин Related Posts Thumbnails позволяет выводить тематические статьи в виде картинок. Но он коряв и требует «долгого» пиления.


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

Вставляем в файл single.php (или где вам нужно вывести записи) следущий код:

<h4>Похожие статьи:</h4>
<?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,
	'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_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
wp_reset_query();
}
?>

Строка ‘showposts’=>5 указывает количество выводимых записей.
Запомните следующее: установка чрезмерного количества плагинов напрямую влияет на скорость блога.

2 comments

  1. Серж

    Поставил себе и прикрутил картинки-превью к статьям. Минус 1 лишний плагин

  2. Shtirlitz

    Спасибо, поставил себе.

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

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