我可以将我的WP_QUERY设置为主查询吗?

时间:2014-05-28 作者:Howdy_McGee

当我创建WP_Query 它自动被视为“二次查询”,但如果我用WP\\u查询替换我的主查询呢?我可以将我的WP\\U查询设置为“主查询”吗?

我之所以这么说是因为我需要pre_get_posts 进行一些筛选。我当前的逻辑如下所示:

if(isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'my_post_type\')
上述逻辑的问题是,我在同一模板中有两个相同帖子类型的查询,但其中只有一个是我的核心查询,我想将该查询标记为“主查询”,以便使用条件查询,例如$query->is_main_query() 区分两者并进行相应过滤。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

这是一种过于复杂的方法。pre_get_posts 将适用于任何查询,并且有多种方法可以控制回调的时间/方式:

添加和删除回调:

function dummy_action($q) {

}

add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
  array(
    \'post_type\' => \'post\'
  )
);
remove_action(\'pre_get_posts\',\'dummy_action\');
使用自删除回调:

function dummy_action($q) {
  remove_action(\'pre_get_posts\',\'dummy_action\');
}

add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
  array(
    \'post_type\' => \'post\'
  )
);
向查询提供一个可以用作触发器的参数:

function dummy_action($q) {
  if ($q->get(\'action_trigger\')) {
    // do something
  }
}

add_action(\'pre_get_posts\',\'dummy_action\');
$q = new WP_Query(
  array(
    \'post_type\' => \'post\',
    \'action_trigger\' => true
  )
);
您不想将辅助查询“分配”为主查询。这将导致与使用query_posts(), 它实际上是将一个辅助查询指定为主查询。

结束

相关推荐

Vimeo Froogaloop API,在小提琴中工作,但不能在WP中工作

我试图利用Vimeo的Froogaloop API,在用户单击某个元素时暂停视频嵌入。我让它在my Fiddle 但它在我的Wordpress环境中不起作用。我从this thread 创建我正在处理的网站的简化版本;HTML<div id=\"player1\" class=\"col\"> <div class=\"vid\"> <iframe src=\"//player.vimeo.com/video/75817361?titl