Wordpress ~ 2 мин

WordPress: вывод «похожих» публикаций

Задача: имеется запись, например, статья из блога. Необходимо на странице записи выводить «похожие» публикации. Понятие «похожести» в данном случае — относительное, так как выводить мы будем записи, находящие на одном уровне вложенности. Рассмотрим пример вывода прочих записей из той же категории и вывод записей из кастомного типа публикаций.

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

<?
$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'=>6,
'order' => 'ASC');
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<div><a href="<? echo the_permalink(); ?>"><? echo the_title(); ?></a></div>
<?
}
}
wp_reset_query();
}
?>

Логика работы следующая: с помощью функции get_the_category получаем данные о категории, в которой находится пост. Дальнейшая фильтрация данных происходит в $args.

category__in — вывод записей только из определенных категорий, которые мы уже определили выше.
post__not_in — исключает из списка нашу текущую запись.
showposts — количество выводимых записей.
order — направление сортировки.

Вывод материалов из кастомного типа записей, в которую входит текущая публикация

В данном примере структура хранения данных несколько иная: материалы хранятся в кастомном типе записей, рубрики — отсутствуют.

<?
$args = array(
'post_type'=> 'do',
'post__not_in' => array($post->ID),
'showposts'=> 6,
'order'    => 'ASC'
);              
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) : 
while ( $the_query->have_posts() ) : 
$the_query->the_post(); 
?>
<div><a href="<? echo the_permalink(); ?>"><? echo the_title(); ?></a></div>
<? endwhile; 
wp_reset_postdata(); 
else: 
endif;
?>

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

Комментарии

Оставить комментарий

Имя видно всем. Сообщения проходят модерацию. Правила обсуждения.

  1. Blizzzard

    работает, спасибо за сэкономленное время!

Обычно отвечаю до 18:00 МСК

Вопрос по статье?

Напишите — разберём на вашем проекте.

Написать в Telegram Без автоответчика · пн–пт

Обсудить задачуОтвет в рабочий день

Написать