WordPress中查询文章的循环Loop结构及用法分析
WordPress 上获取文章最重要的就是循环(Loop),事实上循环就是去数据库查询到相应的文章,然后暂时储存到全局变量里边,需要的时候一篇一篇的输出出来,WordPress 的循环设计的非常好,完成一次循环需要执行 2000 多行代码,而你在使用循环的时候看到的只是一个简单 while 循环加上几个函数,初学者也很好理解。
<?php if( have_posts() ): while( have_posts() ): the_post(); endwhile; endif; ?>
上边就是一个普通的主循环结构,首先用 have_posts() 函数判断是否有文章,有则用 while 语句循环,在循环体里边调用 the_posts() 函数,the_posts() 函数用来告诉 WordPress 核心的查询类,已经查过一篇文章了,每调用一次 the_posts(),循环中的当前文章就会改变。
当调用几次 the_posts() 之后,文章已经全部循环完毕,就让 have_posts() 函数返回 False 来结束循环,所以,一个普通的循环应该是这样的:
<?php if( have_posts() ): ?> <ul> <?php while( have_posts() ):the_post();?> <li <?php post_class(); ?>> <?php the_title( '<h3>', '</h3>' ); ?> </li> <?php endwhile; ?> </ul> <?php endif; ?>
WP_Query类
循环中所用到的方法都是来自于WP_Query类,这里再对WP_Query类做一下科普:
WP_Query 类的功能包括处理查询条件、去数据库获取文章、整理和储存文章、文章循环、根据文章查询条件判断页面类型。
属性
$query
传入的查询条件。
$query_vars
处理 $query 得到的可以使用的查询条件。
$queried_object
根据查询类型给出的查询归属。比如如果是根据分类查询,那么返回一个包含分类信息的类;如果是标签页则返回包含标签信息的类;作者页等以此类推。
$queried_object_id
返回 $queried_object 的 ID.比如分类就是分类 ID;标签就是标签 ID;以此类推。
$posts
从数据库中查询到的文章和文章信息被以数组的形式储存在这个变量里,每篇文章是一个从 WP_Post 类实例化的对象。
$post_count
当前文章数量,换句话说就是 $posts 变量里存储了几篇文章。
$found_posts
统计如果不启用分页会有多少文章。
$max_num_pages
总页数,当前文章被分成几页。
$current_post
当前文章的索引值。在循环中,开始循环 $current_post 为 –1,每循环一次则加 1,它表示当前循环到的文章在 $posts 变量(数组)中的索引值。
$post
循环中当前的文章,是一个包含文章和文章信息通过 WP_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
根据查询条件判断当前是什么页面,然后储存在些变量里,详情可以参考 《 WordPress 页面判断函数 》。
方法
init()
初始化对象,所有属性设置为 null、-1、0 或 False,删除一些属性。
parse_query( $query )
解析并保存查询字符串。
parse_query_vars()
在之前的 WordPress 版本中和 parse_query() 一样的功能,现在直接调用 parse_query() 就好了。
get( $query_var )
根据名字获取一个查询条件。
set( $query_var, $value )
设置一个查询条件。
get_posts()
根据现有的查询条件去数据库获取文章,并保存在 $posts 属性里,同时设置好 $post_count 属性。此函数的返回值就是存储文章的 $posts 属性。
next_post()
(循环控制)将 $current_post 加 1,也就是把当前文章向前推进一篇,同时把推进后的当前文章添加到 $post 属性里,然后返回 $post 属性。
the_post()
(循环控制)进入下一篇文章,调用 next_post() 函数,然后把推进后的当前文章导入到全局变量里边。
have_posts()
(循环控制)判断循环是否完成,如果所有文章都循环完毕或者根本就没有文章则返回 False.
rewind_posts()
(循环控制)跳到循环开头。相当于重置 $current_post 属性和 $post 属性。
query( $query )
查询文章,包括调用 init() 方法、parse_query() 方法和 get_posts() 方法,并返回 get_posts() 方法的返回值,用此函数可以完成一个文章查询的完整操作。
get_queried_object()
生成 $queried_object 属性,如果已经存在则直接返回 $queried_object 属性,所以说,因为默认 $queried_object 是不存在的,想要调用 $queried_object 属性一定要直接使用 get_queried_object() 方法。
get_queried_object_id()
生成 $queried_object_id 属性,如果已经存在则直接返回 $queried_object_id 属性。类似 get_queried_object() 方法。
WP_Query( $query = '' ) , __constructor( $query = '' )
WP_Query 类的构造函数,实例化类的时候自己调用,如果你传入一个查询条件,它会自动调用 query() 方法帮你查询文章。
相关文章
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
深入解析WordPress中加载模板的get_template_part函数
这篇文章主要介绍了WordPress中加载模板的get_template_part函数,其中重点讲解了其函数钩子的使用,需要的朋友可以参考下...2016-01-14- WordPress插件的加载顺序其实对于很多朋友来讲都没有必要如何来操作了,但有时安装插件太多了我们需要设置一顺序了那么要如何来安装呢,下面来看看. 默认的情况下,Word...2016-11-25
- 这篇文章主要介绍了WordPress中用于获取文章作者与分类信息的方法整理,都是来自于WordPress的WP_Query类之下,需要的朋友可以参考下...2015-12-21
- 这篇文章主要介绍了WordPress中获取所使用的模板的页面ID的简单方法,通过这个方法来获取页面的链接是比较方便的,需要的朋友可以参考下...2016-01-04
- 这篇文章主要介绍了yii数据库的查询方法,结合实例简单分析了直接查询和使用criteria进行查询的技巧,需要的朋友可以参考下...2015-12-31
- 这篇文章主要介绍了在WordPress的后台中添加顶级菜单和子菜单的函数详解,需要的朋友可以参考下...2016-01-14
- 这篇文章主要介绍了WordPress中用于检索模版的相关PHP函数使用解析,包括索模板的函数的使用,要的朋友可以参考下...2015-12-17
- 这篇文章主要介绍了编写PHP脚本来实现WordPress中评论分页的功能的方法,包括上一页下一页和导航式分页功能的添加,需要的朋友可以参考下...2015-12-14
- 这篇文章主要介绍了WordPress后台中实现图片上传功能的实例讲解,包括多个图片上传表单功能的实现,需要的朋友可以参考下...2016-01-14
- 这篇文章主要介绍了WordPress中用于创建以及获取侧边栏的PHP函数讲解,分别为register_sidebar()函数和get_sidebar()的使用,需要的朋友可以参考下...2016-01-02
- 这篇文章主要介绍了thinkPHP查询方式,结合实例形式总结分析了thinkPHP的普通查询、表达式查询、区间查询、统计查询及SQL直接查询的使用技巧,需要的朋友可以参考下...2016-01-12
- MySQL默认是不区分大小写的,这个涉及到collate字符集与校验规则方面的知识,下面会讲到,这里我们就来详解MySQL查询时区分字符串中字母大小写的方法....2016-05-20
- 这篇文章主要介绍了Mysql一些复杂的sql语句(查询与删除重复的行),需要的朋友可以参考下...2017-05-25
WordPress中获取页面链接和标题的相关PHP函数用法解析
这篇文章主要介绍了WordPress中获取页面链接和标题的相关PHP函数用法解析,分别为get_permalink()和wp_title()函数的使用,需要的朋友可以参考下...2015-12-21- 这篇文章主要介绍了WordPress中邮件的一些修改和自定义技巧,包括更改邮件为HTML形式以及定义SMTP邮件的发件人的方法,需要的朋友可以参考下...2015-12-17
- 这篇文章主要介绍了在WordPress中实现发送http请求的相关函数解析,包括使用WP_Http类中的函数来发送post或get请求的方法,需要的朋友可以参考下...2016-01-02
解析WordPress中的post_class与get_post_class函数
这篇文章主要介绍了WordPress中的post_class与get_post_class函数,包括post_class()的PHP源码的相应介绍,需要的朋友可以参考下...2016-01-07解析WordPress中控制用户登陆和判断用户登陆的PHP函数
这篇文章主要介绍了WordPress中控制用户登陆和判断用户登陆的PHP函数,WordPress现在多用户功能已推出了一段时间,针对多用户需求的开发也日益增多,需要的朋友可以参考下...2016-03-07- 这篇文章主要介绍了PHP 搜索查询功能的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-12-02