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

时间:2018-11-09 作者:breadwild

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。

我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。

if( $query->is_post_type_archive( \'directory\' ) ){ 
    ...//do stuff
}
我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。

var_dumb($query->is_post_type_archive());
。。我明白了bool(true) 这很有道理。但是“directory”值是如何存储/传递/访问的?

2 个回复
SO网友:Jacob Peattie

首先,你应该做的第一件事是阅读developer docs. 这个问题涉及很多话题,不可能在一个答案中全部解释。

无论如何directory 将是一个Custom Post Type 由主题或插件注册。

当职位类型为registered 开发人员可以告诉WordPress其存档的URL路径应该是什么。

WordPress将创建rewrite rule 因此,当用户访问该URL时,WordPress会收到一个参数,告诉它用户正在请求该帖子类型的存档。

当用户访问该URL时,WordPress将查询该帖子类型存档需要显示的帖子。它会用一个WP_Query() 对象作为查询的一部分,WordPress将设置is_post_type_archive 该对象的属性true, 以及post_type 属性到directory.

开发人员可以使用pre_get_posts filter. 由于WordPress可以对任何给定的请求运行多个post查询,因此此筛选器上使用的任何函数都将收到当前WP_Query 对象作为参数。然后,开发人员可以通过检查$query->is_post_type_archive( \'directory\' )true 对于当前查询。

SO网友:kero

您找到了一个常规WordPress对象,$query, 这在Code Reference 在…上its own page:

WP_Query::is_post_type_archive( mixed $post_types = \'\' )

是否查询现有的帖子类型存档页?

说明参数

$post_types(混合)(可选)要检查的帖子类型或帖子类型数组。

默认值:“”

这个source code 这里也有。那么是什么呢is_post_type_archive($post_types)

  • is_post_type_archive() 退货true 如果当前页面是任何类型的post类型存档

  • is_post_type_archive(\'foo\') 退货true 如果当前页面为(custom) post type foo (可能是post, page, etc)

  • is_post_type_archive([\'foo\', \'bar\']) 退货true 如果当前页面是任何(自定义)帖子类型的帖子类型存档foo, bar.

结束