IT序号网

php之WP_Query 不返回任何结果

qq123 2025年02月15日 编程语言 25 0

我正在尝试使用 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_* 过滤器不能用来改变 get_posts。这就是为什么在您的情况下您使用 get_posts 获得帖子而使用 WP_Query

  • 没有帖子

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!