我有简单的查询。
$args = array(
'post_type' => array($type),
'nopaging ' => true,
'posts_per_page' => $n,
'offset' => $offset,
'orderby' => $orderBy,
'order' => $order
);
$postQuery = new WP_query($args);
$ order来自ASC或DESC,但它始终是ASC。我找到了拒绝的地方,但无法理解原因。在第2383行的wp-includes / query.php(WP 4.1.1)中,有一个操作会破坏我的查询参数。 (或者我理解将它们部分地设置为全局,但部分地作为我的自定义,因为我的帖子类型没有改变)
var_dump($this->query_vars['order']); // here it DESC (as i want)
do_action_ref_array( 'pre_get_posts', array( &$this ) );
var_dump($this->query_vars['order']); // And here it rejeced to ASC
为什么会这样?
答案 0 :(得分:0)
知道了, "简单的自定义发布订单"插件添加了它自己的过滤器,打破了我传递的WP_query args。刚尝试搜索" pre_get_posts"钩子,并发现插件广告它自己的逻辑,已关闭它,一切正常。
因此,如果您遇到类似问题,请检查您的插件。