作为背景,WordPress中有一些函数可以告诉您有关主查询的某些事情。例如is_search()
, is_archive()
etc.将分别告诉您主查询是搜索查询还是存档查询。这些通常(但不一定)与某些模板的使用位置一致。
如果您想了解有关主查询的信息,从而了解您正在查看的页面类型,那么可以使用这些函数。但是,请注意,主查询是WP_Query
, 但是开发人员可以通过创建自己的WP_Query
.
的实例WP_Query
对象具有这些条件函数的等价项methods. 如果您想了解这些特定查询的相同内容,即使它不是主查询,也可以使用这些方法。例如(假设我们不在搜索页面上):
$query = new WP_Query( array( \'s\' => \'Search term\' ) );
var_dump( $query->is_search() ); // true
var_dump( is_search() ); // false
事实上,大多数与查询相关的条件函数只是在主查询上调用这些方法的别名。例如
is_archive()
与此完全相同:
global $wp_query;
return $wp_query->is_archive();
因此,您将这些函数用作方法(即
$query->
) 如果您需要知道该查询是否匹配该条件。或者使用裸函数检查主查询是否与该条件匹配。
请注意,没有什么特别的$query->
. $query
只是一个变量,其中包含WP_Query
. 因此,在进行检查时,您需要替换$query
以实例WP_Query
当涉及到使用pre_get_posts
, 请注意,此操作应用于页面上的所有查询,而不仅仅是主查询。当您向该钩子添加操作时,当前应用钩子的查询将作为第一个参数传递给回调,因此您应该对照该变量检查条件,以仅将更改应用于与条件匹配的查询。