Function Reference/WP Query

来自站长百科
跳转至: 导航、​ 搜索

WP_Query角色[ ]

WP_Querywp-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