WordPress中查询文章的循环Loop结构及用法分析_php技巧

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
文章
wordpress loop、c语言loop用法、discuz loop用法、qeventloop 用法、loop的用法,以便于您获取更多的相关知识。

时间: 2024-09-17 03:08:43

WordPress中查询文章的循环Loop结构及用法分析_php技巧的相关文章

WordPress中给文章添加自定义字段及后台编辑功能区域_php技巧

add_post_meta add_post_meta 函数是 WordPress 中用来给文章或页面添加自定义字段值的一个函数, 其用法与在编写文章时在文章编写界面中利用自定义栏目面板为文章添加自定义字段值的效果是一样的. add_post_meta函数描述 为文章添加自定义字段. 常见的使用有:文章浏览次数.喜欢按钮.seo插件等常用插件就是使用的自定义字段功能. 参数详解 add_post_meta($post_id, $meta_key, $meta_value,$unique); $p

在WordPress中使用PHP脚本来判断访客来自什么国家_php技巧

区分访客国家有什么用? 这里是几个我利用该功能的例子. 1.区分网站功能 这个博客有翻译文章的功能, 这是为了方便海外访客阅读文章, 但对中国人显得十分多余. 所以我通过 IP 判断国家, 对中国大陆地区屏蔽翻译功能. 2.区分展示广告 比如中国大陆地区在侧边栏最下方看到的是拿福能的广告, 而其他地区看到的是 Google 的广告. hostucan 是我的一个广告主, 有英文网站, 也有中文网站, 所以我可以向他提供区分展示服务, 免得浪费流量. 3.屏蔽布点服务 海外有很多好的服务平台, 在

WordPress中用于获取搜索表单的PHP函数使用解析_php技巧

get_search_form 函数在 WordPress 中是用来提取预设的搜索表单或者默认的搜索表单的.因为官方这个函数没有中文的,所以我就简单写了一下. 描述get_search_form 函数在 WordPress 中是用来提取自定义搜索表单或者默认的搜索表单的. 显示自定义表单还是显示默认表单,完全取决于您的主题中是否有search.php文件, 如果有该文件,则自动调用该文件,如果没有则显示默认的搜索表单. 使用 <?php get_search_form($echo = true)

PHP中break及continue两个流程控制指令区别分析_php技巧

以下举例说明break 用来跳出目前执行的循环,并不再继续执行循环了. 复制代码 代码如下: <?php $i = 0; while ($i < 7) { if ($arr[$i] == "stop") { break; } $i++; } ?> continue 立即停止目前执行循环,并回到循环的条件判断处,继续下一个循环. 复制代码 代码如下: <?php while (list($key,$value) = each($arr)) { if ($key =

php中数字、字符与对象判断函数用法实例_php技巧

本文实例讲述了php中数字.字符与对象判断函数用法.分享给大家供大家参考.具体分析如下: 在php判断数字,字符,对象,数组等包括有参见 is_bool().is_int().is_integer().is_float().is_real().is_object() 和 is_array()这些函数了,不知道你知道多少呢. 1. 双精度数判断:is_double is_double -- is_float() 的别名 描述:此函数是 is_float() 的别名函数,代码如下: 复制代码 代码如

php类中的各种拦截器用法分析_php技巧

本文实例讲述了php类中的各种拦截器用法.分享给大家供大家参考.具体用法分析如下: 1.__get( $property ) 访问未定义的属性时调用 复制代码 代码如下: class lanjie  {      function __get($name)      {          echo $name." property not found! ";      }  }  $ob = new lanjie();  echo $ob->g; 当我们调用对象$ob未定义的属性

在WordPress中获取数据库字段内容和添加主题设置菜单_php技巧

get_option() 函数使用技巧get_option()这个函数,实际上我们在整合后台功能的时候经常会用到的一个函数,主要用来从 WordPress 博客数据库 option 表中取得我们想要的字段内容的一个函数,在目前大部分的主题中,只要是主题集成了后台控制页面,也大都用到了这个函数,虽然 WP 给了我们很多方法去临时存储我们对主题的设置,但是用比较稳定的数据库去存储主题设置还是大部分主题作者的首选. get_option() 函数的解释.用法网上还是有很多中文文献的,包括官方文档该函数

WordPress中注册菜单与调用菜单的方法详解_php技巧

register_nav_menus()(注册菜单)register_nav_menus() 函数用来注册一个菜单,菜单指的是 WordPress 3.0+ 的菜单管理器,注册之后用户就可以在菜单管理器里拖动生成导航菜单了. 用法 register_nav_menus( $locations ); 参数 $locations (数组)(必须)要注册的菜单,键值为菜单 ID,键名为菜单名称,可以一次创建多个. 默认值:None 返回值 该函数无返回值. 例子 /** *建立菜单 *http://w

详解WordPress中用于更新和获取用户选项数据的PHP函数_php技巧

update_user_option()函数 update_user_option()函数作用利用全局博客权限更新用户选项. 用户选项类似于用户元数据,唯一的不同之处在于用户选项支持全局博客选项.如果'global'参数为False(默认情况下),update_user_option会预先将WordPress表前缀改成选项名称. [函数使用] <?php update_user_option( $user_id, $option_name, $newvalue, $global ) ?> [函