Skip to content

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

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

Алгоритм

Мы будем отбирать похожие записи по трем первым тегам текущей записи. То есть если на блоге есть еще записи содержащие хоть один тег от первых трех тегов текущей записи, то они будут показаны в блоке «Похожие записи».

Код

Вставьте следующий код в файл single.php, где будет вывод похожих записей:

<ul class="related-posts">
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
	$first_tag = $tags[0]->term_id;
 
	if ( !empty($tags[1]->term_id) ) { $second = $tags[1]->term_id; }
	if ( !empty($tags[2]->term_id) ) { $third = $tags[2]->term_id; }
 
	if (isset($second)) { $second_tag = $second; } else { $second_tag = ''; }
	if (isset($third)) { $third_tag = $third; } else { $third_tag = ''; }
 
	$query_related = new WP_Query(array(
		'tag__in' => array($first_tag, $second_tag, $third_tag),
		'post__not_in' => array($post->ID),
		'showposts'=>5
	));
	if($query_related->have_posts()) { while($query_related->have_posts()) { $query_related->the_post(); ?>
		<li>
			<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
		</li>
	<?php } wp_reset_postdata(); } else {
		_e('This post don\'t have related posts', 'theme_textdomain');
	}
} else {
	_e('This post don\'t have related posts', 'theme_textdomain');
} ?>
</ul>

Цикл вывода записи в теме WordPress выглядит примерно так:

  • Цикл вывода записи
    <?php if(have_posts()) : while(have_posts()) : the_post(); ?>
     
    	<!-- Здесь идет код статьи -->
     
    	<!-- Вставьте код вывода блока похожих записей здесь -->
     
    <?php endwhile; else : ?>
    	<!-- Код, если статья не найдена -->
    <?php endif; ?>
    

Что получится

Если по первым трем меткам записи найдутся записи, то будет выведен маркированный список с ссылками на эти записи, но не более 5. Примерно такой список:

<ul class="related-posts">
<li><a href="#">Запись 1</a></li>
<li><a href="#">Запись 2</a></li>
<li><a href="#">Запись 3</a></li>
<li><a href="#">Запись 4</a></li>
<li><a href="#">Запись 5</a></li>
</ul>

Если похожих записей не будет, то будет выведено This post don’t have related posts. Вы можете вписать свой текст ошибки или настроить перевод темы.