php - WP_Query 不返回任何结果

标签 php wordpress

我正在尝试使用 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() 检查来仅针对主查询

关于php - WP_Query 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213495/

相关文章:

php - WordPress获取json数据单值

centos - phpinfo() 在我的 CentOS 服务器上不工作

php - 是否可以在 SQL 中使用 if 语句?

php - 计算 <li> 被打印了多少次

wordpress - woocommerce_my_account 在转移到另一个托管服务提供商后停止工作

包含年、月、日、帖子和评论数的 Wordpress 存档列表

javascript - 如何选择和更改按钮的颜色并在单击其他按钮时恢复为原始颜色

php - 从数据数组编写循环sql查询(php,mysql)

javascript - 当用户位于页面底部时编辑 css 值

wordpress - 如何用twig和wmpl判断语言