加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:59:55 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:WordPress中查询文章的循环Loop结构及用法分析》要点: 本文介绍了PHP实例:WordPress中查询文章的循环Loop结构及用法分析,希望对您有用。如果有疑问,可以联系我们。 PHP编程 WordPress 上获取文章最重要的就是循环(Loop),事实上循环就是去数据

《PHP实例:WordPress中查询文章的循环Loop结构及用法分析》要点:
本文介绍了PHP实例:WordPress中查询文章的循环Loop结构及用法分析,希望对您有用。如果有疑问,可以联系我们。

PHP编程WordPress 上获取文章最重要的就是循环(Loop),事实上循环就是去数据库查询到相应的文章,然后暂时储存到全局变量里边,需要的时候一篇一篇的输出出来,WordPress 的循环设计的非常好,完成一次循环需要执行 2000 多行代码,而你在使用循环的时候看到的只是一个简单 while 循环加上几个函数,初学者也很好理解.

PHP编程
<?php
if( have_posts() ):
  while( have_posts() ):
    the_post();
  
  endwhile;
endif;
?>

PHP编程上边就是一个普通的主循环结构,首先用 have_posts() 函数判断是否有文章,有则用 while 语句循环,在循环体里边调用 the_posts() 函数,the_posts() 函数用来告诉 WordPress 核心的查询类,已经查过一篇文章了,每调用一次 the_posts(),循环中的当前文章就会改变.

PHP编程当调用几次 the_posts() 之后,文章已经全部循环完毕,就让 have_posts() 函数返回 False 来结束循环,所以,一个普通的循环应该是这样的:

PHP编程
<?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; ?>

PHP编程WP_Query类

PHP编程循环中所用到的办法都是来自于WP_Query类,这里再对WP_Query类做一下科普:
WP_Query 类的功能包括处理查询条件、去数据库获取文章、整理和储存文章、文章循环、根据文章查询条件判断页面类型.
属性

PHP编程$query

PHP编程传入的查询条件.

PHP编程$query_vars

PHP编程处理 $query 得到的可以使用的查询条件.

PHP编程$queried_object

PHP编程根据查询类型给出的查询归属.比如如果是根据分类查询,那么返回一个包含分类信息的类;如果是标签页则返回包含标签信息的类;作者页等以此类推.

PHP编程$queried_object_id

PHP编程返回 $queried_object 的 ID.比如分类就是分类 ID;标签就是标签 ID;以此类推.

PHP编程$posts

PHP编程从数据库中查询到的文章和文章信息被以数组的形式储存在这个变量里,每篇文章是一个从 WP_Post 类实例化的对象.

PHP编程$post_count

PHP编程当前文章数量,换句话说就是 $posts 变量里存储了几篇文章.

PHP编程$found_posts

PHP编程统计如果不启用分页会有多少文章.

PHP编程$max_num_pages

PHP编程总页数,当前文章被分成几页.

PHP编程$current_post

PHP编程当前文章的索引值.在循环中,开始循环 $current_post 为 C1,每循环一次则加 1,它表示当前循环到的文章在 $posts 变量(数组)中的索引值.

PHP编程$post

PHP编程循环中当前的文章,是一个包含文章和文章信息通过 WP_Post 类实例化的对象.

PHP编程$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

PHP编程根据查询条件判断当前是什么页面,然后储存在些变量里,详情可以参考 《 WordPress 页面判断函数 》.

PHP编程办法

PHP编程init()

PHP编程初始化对象,所有属性设置为 null、-1、0 或 False,删除一些属性.

PHP编程parse_query( $query )

PHP编程解析并保存查询字符串.

PHP编程parse_query_vars()

PHP编程在之前的 WordPress 版本中和 parse_query() 一样的功能,现在直接调用 parse_query() 就好了.

PHP编程get( $query_var )

PHP编程根据名字获取一个查询条件.

PHP编程set( $query_var,$value )

PHP编程设置一个查询条件.

PHP编程get_posts()

PHP编程根据现有的查询条件去数据库获取文章,并保存在 $posts 属性里,同时设置好 $post_count 属性.此函数的返回值就是存储文章的 $posts 属性.

PHP编程next_post()

PHP编程(循环控制)将 $current_post 加 1,也就是把当前文章向前推进一篇,同时把推进后的当前文章添加到 $post 属性里,然后返回 $post 属性.

PHP编程the_post()

PHP编程(循环控制)进入下一篇文章,调用 next_post() 函数,然后把推进后的当前文章导入到全局变量里边.

PHP编程have_posts()

PHP编程(循环控制)判断循环是否完成,如果所有文章都循环完毕或者根本就没有文章则返回 False.

PHP编程rewind_posts()

PHP编程(循环控制)跳到循环开头.相当于重置 $current_post 属性和 $post 属性.

PHP编程query( $query )

PHP编程查询文章,包括调用 init() 办法、parse_query() 办法和 get_posts() 办法,并返回 get_posts() 办法的返回值,用此函数可以完成一个文章查询的完整操作.

PHP编程get_queried_object()

PHP编程生成 $queried_object 属性,如果已经存在则直接返回 $queried_object 属性,所以说,因为默认 $queried_object 是不存在的,想要调用 $queried_object 属性一定要直接使用 get_queried_object() 办法.

PHP编程get_queried_object_id()

PHP编程生成 $queried_object_id 属性,如果已经存在则直接返回 $queried_object_id 属性.类似 get_queried_object() 办法.

PHP编程WP_Query( $query = '' ),__constructor( $query = '' )

PHP编程WP_Query 类的构造函数,实例化类的时候自己调用,如果你传入一个查询条件,它会自动调用 query() 办法帮你查询文章.

欢迎参与《PHP实例:WordPress中查询文章的循环Loop结构及用法分析》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读