«Связанные сообщения» является очень популярной функцией. По умолчанию в некоторых темах WordPress есть предустановленная функция в виде плагина, который реализовывает функционал показа «связанных сообщений». Есть достаточное количество плагинов, которые позволяют реализовать эту возможность:

  • Yet Another Related Posts Plugin (YARPP)
  • Similar Posts
  • Aizattos Related Posts
  • WordPress Related Posts
  • Wasabi Related entries

WordPress поддерживает теги в своих новых версиях — так связанные сообщения могут быть реализованы без помощи каких-либо плагинов. Все, что нужно сделать, это найти другие сообщения с такими же тегами, как и текущее сообщение. Для этого необходимо просто отрыть файл single.php в текущей теме WordPress и добавить кусок кода, где будет отображаться блок с связанными сообщениями:

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
	$tag_ids = array();
	foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;

	$args=array(
		'tag__in' => $tag_ids,
		'post__not_in' => array($post->ID),
		'showposts'=>5, // Number of related posts that will be shown.
		'caller_get_posts'=>1
	);
	$my_query = new wp_query($args);
	if( $my_query->have_posts() ) {
		echo '<h3>Related Posts</h3><ul>';
		while ($my_query->have_posts()) {
			$my_query->the_post();
		?>
			<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
		<?php
		}
		echo '</ul>';
	}
}
?>

Этот код находит другие сообщения с любым из тегов, которые содержатся в текущей записи. Если есть необходимость показать сообщения с одной и той же категории, куда входит данное сообщение, тогда необходимо использовать следующий код:

<?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
	);
	// Дальше из предыдущего кода

И как бонус, кусок стиля css, который необходимо добавить в файл style.css

.post .related_post ul {
        font-family: Verdana, Serif;
        margin: 6px 5px 3px 10px;
        padding: 5px 5px 10px 0px;
        border-top: 1px dotted #9c9c9c;
        padding-left: 5px; /* Расстояние между линией и текстом */
        margin-left: 5px; /* Расстояние от левого края до линии */
}

.post .related_post li {
        font-family: Verdana, Serif;
        padding: 2px 2px 2px 5px;
        list-style-type: circle;
        list-style-position: inside;
}

Подключить стиль можно стандартным его включением между

<div class="related_post">
код
</div>

  Один комментарий в “Показ связанных сообщений в WordPress без плагинов”

  1. Отличный совет. Еще бы наглядный пример «до и после». И непонятно — он будет показывать случайные посты? Придется пользоваться плагинами :-(