WP_Query不返回任何结果

时间:2015-05-13 11:29:25

标签: php wordpress wp-query

我正在尝试使用WP_Query和一些参数检索wordpress中的一些页面:

$args = array(
   'post_type' => 'posttype',
   'posts_per_page' => 24,
   'post__in'      => $store_ids,
   'paged' => $paged,
   'post_status' => 'publish',
);

$the_query = new WP_Query( $args );

我试图在这里检索的页面应该与我提供的ID数组中的ID匹配。数组和其他参数似乎很好,因为当我使用get_posts而不是WP_Query时,我得到了我的结果。这里出了什么问题?

2 个答案:

答案 0 :(得分:6)

我有根据的猜测是,你的主题中的某个地方有一个写得不好的过滤器正在WP_Query上运行,很可能就是行动pre_get_posts

get_posts使用WP_Query。唯一的区别是get_posts默认情况下将以下两个参数传递给WP_Query

  • 'no_found_rows' => true“失败”分页,这就是为什么你不能分页get_posts

  • 'suppress_filters' =>true这是重要的一个,它的作用是阻止过滤器改变查询。因此,pre_get_postsposts_*过滤器中的内置版不能用于更改get_posts。这就是为什么在您的情况下,您使用get_posts获取帖子而使用WP_Query

此处的脏修复是将'suppress_filters' => true添加到WP_Query中的查询参数中。正确的解决方法是查找更改查询的过滤器。正如我所说,很可能pre_get_posts你没有使用is_main_query()检查来定位主查询

答案 1 :(得分:0)

wp_reset_query()行之后使用WP_Query