@lookser

Вывод записей по фильтру 2х таксономий?

Есть произвольный тип записей info
Есть таксономия categ (Категории)
Есть таксономия city (город)
Записям присвоении обе таксономии.
<?php  
 $query = new WP_Query( array( 'post_type' => 'info', 'city' => 'Рязань', 'posts_per_page' => 24 ) );  ?>
<?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
	<?php the_title(); ?>
<?php endwhile; ?>
	<?php wp_reset_postdata(); ?>
	<?php else: ?> 
		<?php echo '<span>событий нет.</span>'; ?>
<?php endif; ?>

Этим кодом выводятся записи с таксономии 'city' => 'Рязань'
Аналогично могу вывести 'categ' => 'МВД'
Но как мне вывести записи которым присвоены обе таксономии?
$query = new WP_Query( array( 'post_type' => 'info', 'categ' => 'МВД', 'city' => 'Рязань', 'posts_per_page' => 24 ) );

Этот код не выводит записи ни какие
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Для получения записей, которые принадлежат одновременно двум таксономиям вам нужно добавить в массив аргумент tax_query

$args = [
	'post_type' => 'info',
	'posts_per_page' => 24,
	'tax_query' => [
		'relation' => 'AND',
		[
			'taxonomy' => 'city',
			'field' => 'name',
			'terms' => [ 'Рязань' ]
		],
		[
			'taxonomy' => 'categ',
			'field' => 'name',
			'terms' => [ 'МВД' ]
		]
	]
];

$query = new WP_Query( $args );

// Цикл.
if ( $query->have_posts() ) {
	while ( $query->have_posts() ) {
		$query->the_post();
		
		the_title(); // выводим заголовок

	}
} else {
	// Постов не найдено
}

// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы