У нас есть пользовательский тип записи hr-priority, с которым связано несколько пользовательских таксономий.Эти таксономии содержат несколько терминов, и каждому сообщению может быть присвоено одно-много терминов из этих таксономий.Мы пытаемся настроить фильтр, который позволяет посетителям искать / фильтровать результаты, комбинируя эти термины в нескольких таксономиях.
Например: пост "Образец поста" имеет для таксономии "год"термин "2018", таксономия "org", термин "член совета" и таксономия "страна", термин "канада".В посте «Другой образец» для «год» используется термин «2016», для таксономии «org» - термин «менеджер», а для таксономии «страна» - термин «Канада».В посте «Третий пост» для таксономии «год» - термин «2018», для организации таксономия - «группа безопасности», а в таксономии «страна» - термин «Исландия».
Мы хотимбыть в состоянии отфильтровать результаты по всем этим условиям, поэтому, если я выберу просто просмотреть сообщения за год = 2018, я получу «Третье сообщение» и «Образец сообщения», но затем, если я отфильтрую их по стране = КанадеЯ получу только «Образец поста» (потому что фильтры будут иметь год = 2018 и страна = «Канада»).
Я использую плагин Search & Filter.Я попытался использовать страницу шаблона archive-hr-priority.php для результатов, но этот шаблон вообще не был распознан в результатах.Затем я использовал пользовательские шаблоны таксономии, такие как taxonomy-year.php, которые работали только с одним фильтром, поэтому, когда я отфильтровал по году = 2018, единственные возвращаемые сообщения были из года 2018, но затем, когда я добавил второйПоисковый запрос, например country = "canada", вернул все результаты для country = canada, но со всеми терминами года.
Это мой шорткод поиска и фильтрации:
echo do_shortcode( '[searchandfilter post_types="hr-priority" fields="year,country"]' );
И этокод, который я использую в пользовательских шаблонах таксономии (я создал один для каждой таксономии):
if (is_tax() || is_category() || is_tag() ){
$qObj = get_queried_object();
$args = array(
'post_type'=>'hr-priority',
'tax_query' => array( array(
'taxonomy' => $qObj->taxonomy,
'field' => 'id',
'terms' => $qObj->term_id
)),
'post_status'=>'publish',
'posts_per_page'=>20
);
}
echo($qObj->slug); //just to view the term/s being used
$wpb_all_query = new WP_Query($args);
if ( $wpb_all_query->have_posts() ) : ?>
<?php
/* Start the Loop */
while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post();
get_template_part( 'template-parts/post/hr-priorities-post', get_post_format() );
endwhile;
И этот URL-адрес возвращается после отправки параметров поиска и фильтрации:
https://exampleurl.org/org/council-member?country=afghanistan&post_types=hr-priority-un
Какможно заставить его фильтровать по нескольким терминам в нескольких таксономиях и возвращать только результаты, которые соответствуют ВСЕМ параметрам поиска?