[英]WP_Query returns no results
我正在尝试使用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
时确实得到了结果。 这是怎么了?
我的有根据的猜测是,您的主题中某个地方的过滤器编写得很差,正在作用于WP_Query
,并且很可能是pre_get_posts
动作。
get_posts
使用WP_Query
。 唯一的区别是,默认情况下, get_posts
将以下两个参数传递给WP_Query
:
'no_found_rows' => true
,“分页”失败,这就是为什么您不能对get_posts
分页
'suppress_filters' =>true
这是重要的,它的作用是,它阻止过滤器更改查询。 因此pre_get_posts
和posts_*
过滤器中的posts_*
无法用于更改get_posts
。 这就是为什么在您的情况下,您使用get_posts
而不是WP_Query
来获取帖子
这里的肮脏解决方法是在WP_Query
的查询参数中添加'suppress_filters' => true
。 正确的解决方法是寻找更改查询的过滤器。 正如我所说的,最有可能pre_get_posts
,你没有使用is_main_query()
检查只是针对主查询
在WP_Query
行之后使用wp_reset_query()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.