Я создаю внешний интерфейсный фильтр, который содержит флажки, которые посетители могут нажимать для сортировки сообщений на основе таксономий. Сообщения, которые они могут фильтровать, представляют собой пользовательский тип сообщений с 3-мя таксономиями.
Это пользовательский живой фильтр ajax, поэтому, когда кто-то нажимает на флажок, возвращается результат, нет загрузки страницы и кнопки отправки.
Внешний интерфейс работает нормально, информация, отправляемая на конечную точку, в порядке, и если я сузю запрос до одной таксономии, все будет работать так, как ожидается, независимо от таксономии, к которой я сужу фильтр. Но с несколькими таксономиями в запросе я сталкиваюсь с проблемами. Это первый раз, когда я создаю что-то подобное, поэтому я надеюсь, что это всего лишь незначительная вещь, о которой я не задумывался, но, что бы я ни пытался, фильтр таксономии фильтрует только по первой таксономии, которая имеет термин, который проверено.
Пример:
Налог 1
Налог 2
Налог 3
Если первый установленный флажок принадлежит Налог 1 , он будет фильтроваться только в пределах Налог 1 . Если я пытаюсь установить флажок, относящийся к Налог 2 или Налог 3 , он полностью игнорирует эти условия / налог и по-прежнему фильтрует только первую таксономию.
Я знаю, что я делаю что-то не так в запросе, поэтому я очень надеюсь, что кто-то здесь, на SO, может дать мне некоторое представление о том, что я должен сделать, чтобы заставить это работать.
Вот конечная точка ( запрос ):
function myFilter ($data) {
$checkFylker = $data['checkFylker'];
$checkUtstyr = $data['checkUtstyr'];
$checkFors = $data['checkFors'];
$checkType = $data['checkType'];
//return $results;
//Main $args
$args = array(
'post_type' => 'ml_opp', // Query only "ml_opp" custom posts
'post_status' => 'publish', // Query only posts with "publish" status
'orderby' => 'date', // Sort posts by date
'order' => 'ASC' // ASC
);
$args['tax_query'] = array( 'relation'=>'AND' ); // AND means that all conditions of meta_query should be true
// for taxonomies / utstyr
if( isset( $checkUtstyr ) )
$args['tax_query'][] = array(
array(
'taxonomy' => 'ml_utstyr',
'field' => 'id',
'terms' => $checkUtstyr
)
);
//for taxonomies / forsendelse
if( isset( $checkFors ) )
$args['tax_query'][] = array(
array(
'taxonomy' => 'ml_forsendelse',
'field' => 'id',
'terms' => $checkFors
)
);
// for taxonomies / fylker
if( isset( $checkFylker ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'ml_fylk',
'field' => 'id',
'terms' => $checkFylker
)
);
// for taxonomies / type
if( isset( $checkType ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'ml_typ',
'field' => 'id',
'terms' => $checkType
)
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<h2>' . $query->post->post_title . '</h2>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}