@skdon

Как исключить из поиска определенные таксономии?

День добрый!
На сайте есть справочник с определенной таксономией: ?taxonomy=ait-dir-item-category&post_type=ait-dir-item
Мне нужно не выводить в результатах поиска эти записи.
Пробую так:
function searchExcludePages($query) {
 if ($query->is_search) {
 $query->set('post_type', 'ait-dir-item');
 }
 return $query;
 }
 add_filter('pre_get_posts','searchExcludePages');

Не работает. Записи все равно отображаются. Подскажите, как можно исключить их из результатов поиска.
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Добрый.

Никогда не сталкивался с такой задачей. Но теоретически должно работать как-то так:
function searchExcludePages($query) {
	if ($query->is_search) {
		$terms = get_terms( array( 'taxonomy' => 'ait-dir-item-category' ) );
		$to_exclude = array();
		foreach ( $terms as $term ) {
			$to_exclude[] = $term->term_id;
		}
		
		$tax_query = array(
		array(
			'taxonomy'  => 'ait-dir-item-category',
			'terms' => $to_exclude,
			'operator'  => 'NOT IN'
			)
		);
		
		$query->set('tax_query', $tax_query);
	}
}
add_filter('pre_get_posts','searchExcludePages');
Ответ написан
william666
@william666
исключить записи из таксономии

function searchExcludePages($query) {
 if ($query->is_search) {
$query->set('post_type', 'ait-dir-item');

 $taxquery = array([
	'post_type' => 'ait-dir-item',
        'taxonomy' => 'ait-dir-item-category',
        'field' => 'slug',
        'operator' => 'NOT IN',
        ]);

        $query->set( 'tax_query', $taxquery );
 }
 return $query;
 }
 add_filter('pre_get_posts','searchExcludePages');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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