Как создать мульти-таксономический, многозначный запрос на основе пользовательского ввода
Благодаря превосходному сообщению Отто о расширенных запросах таксономии, я (в основном) понимаю, как создавать мульти-таксономические и многозначные запросы. Однако чего я не знаю, так это как создавать их динамически на основе пользовательского ввода. Я бы очень хотел закончить чем-то вроде Amazon.com имеет на своем сайте флажки рядом с различными терминами для таксономии на боковой панели (и несколько списков терминов, каждый с заголовком таксономии). Что-то вроде это:
Как мне построить что-то подобное? Динамическое отображение содержимого (содержимое изменяется, когда установлен флажок) было бы здорово, но я бы, конечно, согласился на наличие кнопки "отправить".
2 answers
Я немного нечетко разбираюсь в специфике технической стороны, но я думаю, что общий план будет следующим:
Интерфейс - вам нужно будет либо отправить это в виде формы с помощью кнопки, либо JavaScript.
Переменные запроса - вам нужно будет зарегистрировать пользовательские переменные с помощью фильтра
query_vars
, чтобы ваши пользовательские данные не были удалены из URL.- Запрос - изменение запроса для создания сложного запроса с использованием пользовательских данных представленный.
Отправляйте форму с помощью javascript при изменении статуса поля. Затем вы можете использовать wp_query для создания нового запроса и использовать tax_query для отображения проверенных таксономий:
$args = array(
... // posttype and such
'tax_query' => array(),
...// other arguments
);
//if post is set
if(isset($_POST['cats'])){
//pusch to array
$args['tax_query'][] = array(
'taxonomy' => 'the taxonomy',
'field' => 'id', // get tax by id or slug
'terms' => $_POST['cats'],
'operator' => 'AND' // or you can choose 'IN'
);
}
$new_query = new Wp_Query($args);
//start loop
while ($new_query->have_posts() ) : $new_query->the_post(); ?>
Надеюсь, это поможет.