while循环使用数组推送get_field ACF插件不起作用

时间:2017-01-23 13:07:29

标签: php ajax wordpress filter while-loop

请有人告诉我我的代码出错了吗?

循环无效。

当我这样做时,整个页面都是空白的。

 function filter_reports() {
   global $customer_account;
   $args = array(
     'post_type' => 'ebooks',
     'tax_query' => array(
       'relation' => 'AND',
       array(
         'taxonomy' => 'customer',
         'field'    => 'term_id',
         'terms'    => $customer_account,
       ),
       array(
         'taxonomy' => 'disease',
         'field'    => 'term_id',
         'terms'    => $_POST['options'],
       )
     ),
   );

$the_query = new WP_Query( $args );
$results = array();

   if ( $the_query->have_posts() ) {
     while ( $the_query->have_posts() ) {
    $id =  get_the_ID();
      array_push($results, array(
        'id' => $id,
        'title' => get_field('title', $id),
        'chair' => get_field('e-chair', $id),
      ));
    }
  }

  echo json_encode($results);
  die;

}
  add_action( 'wp_ajax_filter_reports', 'filter_reports' );
  add_action( 'wp_ajax_nopriv_filter_reports', 'filter_reports' );

我想让我在ACF插件中创建的自定义字段在我的while循环中循环。 但是整个WHILE都没有用。

我真的希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

  

你的while循环不起作用,因为你没有迭代帖子   循环中的索引,必须在while循环中设置   the_post()

所以你的代码应该是这样的:

$the_query = new WP_Query($args);
$results = array();
while ($the_query->have_posts()) : $the_query->the_post();
    $id = get_the_ID();
    array_push($results, array(
        'id' => $id,
        'title' => get_field('title', $id),
        'chair' => get_field('e-chair', $id),
    ));
endwhile;
wp_reset_postdata();

替代方法:

$the_query = new WP_Query($args);
$results = array();
if (!empty($the_query->posts))
{
    foreach ($the_query->posts as $post)
    {
        $id = $post->ID;
        array_push($results, array(
            'id' => $id,
            'title' => get_field('title', $id),
            'chair' => get_field('e-chair', $id),
        ));
    }
}
wp_reset_postdata();

希望这有帮助!