Расширенная Логика Запросов С Несколькими Таксономиями
У меня на сайте есть страница, которая служит инструментом поиска/страницей результатов поиска для пользователей, чтобы найти арендуемые помещения. Слева находится столбец с флажками, которые позволяют пользователю фильтровать результаты по трем отдельным пользовательским таксономиям (space-types
, space-features
, space-areas
) в правой части страницы перечислены результаты после отправки формы с флажком.
Я пытаюсь правильно запросить пробелы (пользовательский тип записи space-listings
) на основе выбранных терминов в каждой таксономии, но логика кажется, это невозможно, и я не знаю, как еще это сделать.
Это необходимая логика:
Если в списке пространств есть ЛЮБОЙ из space-types
и ВСЕ space-features
, которые выбрал пользователь, И есть ЛЮБОЙ из space-areas
, которые они выбрали.
Вот самое близкое, что я получил с моим массивом запросов:
$searchspace = array (
'post_type'=>'space_listing',
'posts_per_page'=> 3,
'paged' => $paged,
'tax_query'=> array (
'relation' => 'AND',
array (
'taxonomy' => 'space-types',
'field' => 'slug',
'terms' => $searchedtypes, //Array of selected types
'operator' => 'IN'//default
),
array (
'taxonomy' => 'space-features',
'field' => 'slug',
'terms' => $searchedfeatures, //Array of selected features
'operator' => 'AND'
),
array (
'taxonomy' => 'space-areas',
'field' => 'slug',
'terms' => $searchedareas, //Array of selected areas
'operator' => 'IN'//default
),
)
);
1 answers
См. Параметры таксономии в Кодексе.
Первые области, вероятно, также должны быть в вашем tax_query
.
Второе - вам, вероятно, нужно использовать аргумент operator
в запросах (внутренних). Я не уверен, не проверяя это, но AND
похоже, что это будет для более строгих соответствий, чем по умолчанию IN
для вашей обязательной логики типов/функций.