用于多个ID的Wordpress WP_Query返回null

时间:2014-07-20 09:33:02

标签: php wordpress

我有以下数组:

array (12,15,21,32,33);

然后我使用以下查询来获取帖子(上面的ID):

$the_query = new WP_Query( array("post__in"=>$ids_array) );       // edited

    while($the_query->have_posts())
    {
$the_query->the_post(); // added on edit, but still does not work      
the_title()."<br />";
    }

但我什么都没得到,没有错误也没有中断。我检查了ID,但它们是正确的。

编辑:我已将此查询放在加载到页脚的模块的末尾。我不知道它是否重要:

1 个答案:

答案 0 :(得分:1)

您忘了添加while ( $the_query->have_posts() ) : $the_query->the_post();

您只是在查看是否有帖子,但没有采取任何措施

$ids_array = array (12,15,21,32,33);

$the_query = new WP_Query( array('post__in'=>$ids_array) );       

<?php if ( $the_query->have_posts() ) : ?>

  <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><?php the_title(); ?></h2></br>
  <?php
     endwhile; 
    wp_reset_postdata(); 
   endif; 
  ?>

修改

我认为这里的根本问题不是此自定义查询,因为此自定义查询有效。从您的评论中可以看出,您在同一页面上使用了另一个自定义查询。

我不知道第一个查询的代码是什么样的,但是这里有一些你需要去查看的故障排除点

  • 很可能您没有在第一次查询时重置postdata。这将破坏您的第二个查询。当您使用wp_reset_postdataWP_Query运行自定义查询时,get_posts非常重要。在第一个wp_reset_postdata实例后检查您是否使用过WP_Query。您的第一个查询格式应与我的答案中的格式相同

  • 您应该为WP_Query的每个实例使用不同的变量。例如,第一个实例为$variable1 = new WP_Query( YOUR ARGUMENTS ),第二个实例为$variable2 = new WP_Query( YOUR ARGUMENTS )