Расширенная логика запросов с несколькими таксономиями

У меня есть страница на моем сайте, которая действует как страница поиска / результатов поиска для пользователей, чтобы найти места для аренды. С левой стороны находится столбец флажков, который позволяет пользователю фильтровать результаты по трем отдельным пользовательским таксономии ( 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 ), ) ); 

См. Таксономические параметры в Codex.

Во-первых – области, вероятно, также должны быть в вашем tax_query .

Во-вторых – вам, вероятно, нужно использовать аргумент operator в запросах (внутренних). Я не уверен, не тестируя это, но, похоже, для более строгих совпадений, чем значение по умолчанию IN для вашей логики обязательных типов / функций.