Задать вопрос
karelina-nat
@karelina-nat

Как вывести на single.php случайные посты из всех категорий, кроме текущей?

У меня на странице single.php выводится пост , а ниже секция рекомендованное, где должны появляться 4 поста из всех категорий в рандомном порядке, кроме постов из категории текущего поста.
<!-- Вывод случайных блюд из админки -->
 <?php
$args = array(
	'post_type' => 'blyuda',
    'posts_per_page' => 4,
    'orderby' => 'rand',
    // 'order'   => 'ASC',
     'tax_query' => array(
		array(
			'taxonomy' => 'food_categories',
            'field'    => 'slug',
            'terms'    => array( 'zavtraki-celyj-den', 'torty' ),
		)
	)
);

$item_query = new WP_Query($args); 


if($item_query->have_posts()): 
	while($item_query->have_posts()):
        $item_query->the_post();
        get_template_part( 'template-parts/menu-posts', get_post_format() ); ?>
      
<?php	endwhile;
endif;

?>


Сейчас в термах указаны тупо две категории.

Что нужно написать в термы, чтобы так получилось?
Общая категория всех постов 'food_categories'.
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
Получаете id текущей категории и в WP_Query указываете её с минусом в аргументах:
$query = new WP_Query('cat=-4');
Ответ написан
Комментировать
karelina-nat
@karelina-nat Автор вопроса
Решила через термы

<!-- Вывод случайных блюд из админки -->
 <?php



$term_item = get_the_terms( get_the_ID(), 'food_categories' )[0]->slug; //Определяем текущую категорию

$args = array(
	'post_type' => 'blyuda',
    'posts_per_page' => 4,
    'orderby' => 'rand',
    // 'order'   => 'ASC',
     'tax_query' => array(
		array(
			'taxonomy' => 'food_categories',
            'field'    => 'slug',
            'terms' => array( $term_item), // Объявляем посты из текущей категории
            'operator' => 'NOT IN', // Исключаем посты из текущей категории
		)
	)
);

$item_query = new WP_Query($args); 


if($item_query->have_posts()): 
	while($item_query->have_posts()):
        $item_query->the_post();
        get_template_part( 'template-parts/menu-posts', get_post_format() ); ?>
      
<?php	endwhile;
endif;
wp_reset_postdata();
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы