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