繁体   English   中英

WP_Query不返回任何结果

[英]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_postsposts_*过滤器中的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM