如何克隆全局 WP_Query 对象并仅更改一个参数?

Ale*_*dru 3 php wordpress

我在我的 WordPress 安装中添加了一个新的post_type帖子,我想查询这些帖子并循环使用它们。问题是我必须手动构建参数,具体取决于它是类别页面还是标签页面等。

有没有办法重用已经可用的全局 WP_Query 对象,修改参数post_type并运行查询?

这就是我想避免的:

$query = array(
  'post_type' => 'vehicle',
);

if( is_category() ){
  $query['category_name'] = get_query_var('category_name')
}

if( is_category() ){
  $query['category_name'] = get_query_var('category_name')
}

if( is_tag() ){
  $query['tag'] = get_query_var('tag')
}


// ... and so on

$loop = new WP_Query($query);
Run Code Online (Sandbox Code Playgroud)

我不想使用该pre_get_posts方法,因为这样做会改变用于网站其余部分的全局查询。

Ale*_*dru 5

我已经像这样修复了它:

$query = $wp_query->query_vars;

$query['post_type'] = 'vehicle';

$loop = new WP_Query($query);
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是正确的方法,但它对我有用。