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 нужно указать символьный код (таксономию) вашего типа записей.

Опубликовано: 7 июня 2020 года, в рубрике «Wordpress».

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

5000
  Подписаться  
сначала новые сначала старые
Уведомление о
Blizzzard

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

Поблагодарить автора статьи
Зачем это нужно