Я использую ajax для отправки данных в пользовательскую конечную точку отдыха.Я делаю это, потому что я создаю функцию фильтра на моем сайте WP.
Теперь я застрял, пытаясь заставить tax_query работать с моим набором терминов, собранных с помощью JS на внешнем интерфейсе.Независимо от того, что я делаю, я не могу заставить это работать, и я сильно подозреваю, что это лишь небольшая ошибка, которую я продолжаю пропускать ...
Просто чтобы уточнить, ajax успешно отправляет запрос, нозапрос возвращает все сообщения, независимо от того, что.
Вот флажки, используемые в интерфейсе:
<div class="form-group">
<?php
if( $terms = get_terms( array( 'taxonomy' => 'utst', 'hide_empty' => false, 'orderby' => 'name' ) ) ) :
foreach ( $terms as $term ) :
echo '<div class="form-check">';
echo '<label class="form-check-label" for="'.$term->slug.'"><input class="form-check-input" type="checkbox" id="'.$term->slug.'" name="utstyrAr[]" value="'.$term->term_id.'"> '.$term->name.'</label>'; // ID of the category as the value of an option
echo '</div>';
endforeach;
endif;
?>
</div>
JS (функция ajax):
filterOppdrag(fiOppdrag) {
var utst = [];
var utstyrArray = document.getElementsByName("utstyrAr[]");
for (var i = 0; i < utstyrArray.length; i++) {
if(utstyrArray[i].type =='checkbox' && utstyrArray[i].checked == true) utst.push(utstyrArray[i].value);
}
console.log(utst);
$.ajax({
url: the.root + '/wp-json/myfilter/v1/filter',
type: 'GET',
data: {
'checkUtst' : utst,
},
success: (response) => {
console.log(response);
},
error: (response) => {
console.log(response);
}
});
}
И wp_query (php):
function myFilter ($data) {
$checkUtst = sanitize_text_field($data['checkUtst']);
//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 or DESC
);
// for taxonomies / utstyr
if( isset( $utstyr ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'ml_utst',
'field' => 'id',
'terms' => $checkUtst
)
);
$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();
}
Это возвращает все сообщения независимо от условий, независимо от того, через что я прохожу.Я не получаю сообщений об ошибках и да, я проверил, чтобы в массиве было значение, когда я отправляю его в запрос.Но что с ним происходит на дороге, я не знаю.Вот почему я полагаю, что это, вероятно, просто ошибка новичка, которую я делаю здесь.
Любая помощь будет принята с благодарностью!