Передача массивов с помощью ajax на пользовательские конечные точки - PullRequest
0 голосов
/ 05 марта 2019

Я использую 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();
    }

Это возвращает все сообщения независимо от условий, независимо от того, через что я прохожу.Я не получаю сообщений об ошибках и да, я проверил, чтобы в массиве было значение, когда я отправляю его в запрос.Но что с ним происходит на дороге, я не знаю.Вот почему я полагаю, что это, вероятно, просто ошибка новичка, которую я делаю здесь.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 марта 2019

Вы пытались удалить упаковочный массив и не использовать ключ?

            $args = array(
                'taxonomy'  => 'ml_utst',
                'field'     => 'id',
                'terms'     => $checkUtst
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...