Function Reference/WP Query
WP_Query角色[ ]
WP_Query是wp-includes/query.php定义的class,处理WordPress博客上错综复杂的查询。wp-blog-header.php(或者2.0版本中的WP class)向$wp_query object提供信息,定义当前的查询,然后$wp_query决定处理的查询的类型(类别归档?日期归档?feed?搜索?),并且获得查询的文章。查询上仍然留有许多信息,可以稍后处理。
方法和属性[ ]
这是WP_Query正式的文档。你不能够直接地更改属性,但是可以使用一些方法,处理属性。也看看Interacting with WP_Query上的一些函数,避免混乱class internals和全局变数。
属性[ ]
- $query
- 拥有wp-blog-header.php(或者2.0版本中的WP class)传递给$wp_query object的字符串。关于这个查询字符串结构的信息(对于WP1.5中的wp-blog-header.php-下面的链接已经过时了),请看看WordPress Code Flow。
- $query_vars
- 一个联合的数组,包含分开的$query:一组查询变数及其相关的参数值。 如果查询类别,作者,permalink或者网页,
- $queried_object
- 就可以适用。将信息放置在被请求的类别,作者,文章或者网页上。
- $queried_object_id
- Simply拥有以上属性的ID。
- $posts
- 由数据库中的文章填满。
- $post_count
- 显示的文章数目。
- $current_post
- (在The Loop时,可以得到)显示当前显示的文章的索引。 (在The Loop时,可以得到) 显示当前显示的文章
- $post
- $is_single, $is_page, $is_archive, $is_preview, $is_date, $is_year, $is_month, $is_time, $is_author, $is_category, $is_tag, $is_tax, $is_search, $is_feed, $is_comment_feed, $is_trackback, $is_home, $is_404, $is_comments_popup, $is_admin, $is_attachment, $is_singular, $is_robots, $is_posts_page, $is_paged
- Booleans指定这是哪种方式的查询。例如,前三个查询分别代表'这是不是个permalink?', '这是不是个网页?', '这是不是什么类型的归档网页?'。
方法[ ]
(方法名称之前有一个&符号(&) 指出会返回方法供参考。)
- init()
- 初始化object,将所有的属性设置为空,零或者错误的。
- parse_query($query)
:获得定义查询的字符串,解析这个字符串并且配置除了$posts, $post_count, $post and $current_post之外的所有属性。
- parse_query_vars()
- 重新解析旧的查询字符串。
- get($query_var)
- 得到指定的查询变数。
- set($query_var, $value)
- 将指定的查询字符串设置为一个特定的值。
- &get_posts()
- Fetch and return the requested posts from the database. Also populate $posts and $post_count.
- next_post()
- (在 The Loop时,使用) 进入$posts中的下一篇文章。增加 $current_post并且设置 $post。
- the_post()
- (在 The Loop时,使用) 进入下一篇文章,并且设置全局$post 变量。
- have_posts()
- (在 The Loop时,使用或者在Loop之前使用) 决定我们是否还有需要显示的文章。
- rewind_posts()
- 重新设置 $current_post 和 $post。
- &query($query)
- 调用 parse_query() 和 get_posts()。返回get_posts()的结果。
- get_queried_object()
- 如果$queried_object 还没有设置,设置$queried_object并且返回$queried_object。
- get_queried_object_id()
- 如果$queried_object_id还没有设置,设置$queried_object_id并且返回。
- WP_Query($query = '') (constructor)
- 如果你提供了查询字符串,用这个字符串调用query() 。
与 WP_Query相结合[ ]
大多数时候,你能够找到你想要的信息,不需要真正地处理class internals和全局变数。你可以从任何地方调用许多函数,这些函数能够使你得到你需要的信息。
你可能想将WP_Query用于两个主要的环节中。首先要找出WordPress当前处理的是哪种类型的请求。$is_*属性是用来保存这个信息的:使用条件式标签影响这里。这是插件作者更常用的scenario(第二个一般用于主题作者)。
The second is during WordPress:The Loop. WP_Query为Loop内一些常见的函数提供了许多函数。首先,调用$wp_query->have_posts()的have_posts(),得到了调用,核查是否要显示任何文章。如果要显示文章,就会开始while loop,使用have_posts()作为条件。只要有文章显示,就会重复while loop。在每一次重复的过程中,调用$wp_query->the_post()的the_post()得到了调用,设置了$wp_query内的内部变数和全局$post变数(模板标签依赖于这些变数)。编写需要loop的主题文件的时候,你就需要使用这些函数。更多的信息,请看看The Loop 和运转的Loop。