如何检测`POSTS_WHERE`钩子内的自定义查询?

时间:2017-01-12 作者:prosti

想象你有这样的东西:

function f_posts_where( $where ){
// set a condition based on arguments ...    
}

add_filter( \'posts_where\', \'f_posts_where\' );
f_posts_where?

我创建如下自定义查询:

$q = new \\WP_Query( $args );

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

如果我们有这样的查询参数

$args = array(
  \'queryid\' => \'blackjack\',
   ...    
);
$q = new WP_Query( $args );
注意:我们添加了一个自定义查询参数,该参数在here.现在我们可以通过它来确定确切的查询queryid 如果我们使用posts_where

function f_posts_where( $where,  \\WP_Query $q ){
  // $q->query will hold the query arguments ...
  if ( \'blackjack\' == $q->query[\'queryid\'] ){
    // do our custom actions on $where for our queryid blackjack
    return $where.
  }
 return $where;
}

add_filter( \'posts_where\', \'f_posts_where\', 10 , 2 );
正如你所注意到的$q->query 将保留查询参数。

如果我们添加喜欢的自定义参数,这将允许我们拦截喜欢的自定义查询。在这种情况下queryid.

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post