现在的位置: 首页WordPress>正文
WordPress的have_posts()和the_post()  
发表于609 天前 WordPress 评论数 7

WordPress的index.php中,有下面一段代码:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!–PHP代码 –>
<?php endwhile; ?>
<?php endif; ?>

这里有两个函数,have_posts()和the_post()
WordPress的have_posts() 默认是一个全局函数。

have_posts函数被调用时实际上是调用全局变量$wp_query->have_posts()成员函数,来简单检查一个全局数组(array)变量$posts的一个循环计数器,以确认是否还有post,如果有返回true(1),如果没有返回false(0)。

the_post()函数则调用$wp_query->the_post()成员函数前移循环计数器,并且创建一个全局变量$post(不是$posts),把当前的post的所有信息都填进这个$post变量中,以备接下来使用。

简单的使用可以通过函数来直接执行,如the_content()直接显式post的内容,the_title()显式帖子的标题,the_time()显示帖子的时间等WORDPRESS的Template Tags。

高级应用或要定制应用则可以直接调用$post变量的成员。

WordPress的have_posts()和the_post():目前有7 条留言

  1. 汽车膜 : 2010年09月20日10:22 上午

    楼主研究的够透彻,不过wp后天太慢,效率没有国产的程序挖掘的深。

    老张 回复:

    @汽车膜, 是啊

  2. jalena : 2010年11月08日10:12 上午

    楼主确实研究的很透彻啊,不知楼主对attachment研究的如何!

    老张 回复:

    @jalena, attachment是什么?

  3. yanjie : 2011年10月11日10:19 下午

    博主对wp理解很深啊,我最近正好也看到这段loop,对其中一个问题很不解,不知道隔了这么久,博主能否阅读到我这个留言。
    博主文中提到$post变量是在the_post()之后给予赋值的。
    但是我发现我在模板文件index.php的最上面,也就是在get_header()之前,这里显然还没有调用到have_posts()和the_post()吧,我发现在这里直接使用print_r($post),居然能直接打印出当前页面的文章信息!这样就和博主所说的,甚至网上大部分关于the loop的解释矛盾了,本人甚是不解,望指教,谢谢~

  4. yanjie : 2011年10月11日10:19 下午

    博主对wp理解很深啊,我最近正好也看到这段loop,对其中一个问题很不解,不知道隔了这么久,博主能否阅读到我这个留言。
    博主文中提到$post变量是在the_post()之后给予赋值的。
    但是我发现我在模板文件index.php的最上面,也就是在get_header()之前,这里显然还没有调用到have_posts()和the_post()吧,我发现在这里直接使用print_r($post),居然能直接打印出当前页面的文章信息!这样就和博主所说的,甚至网上大部分关于the loop的解释矛盾了,本人甚是不解,望指教,谢谢~

  5. 柏元 : 2011年12月07日1:10 下午

    请教博主,以下问题可能与内容稍不相干,因为小弟想使用js来调用wordpress的首页、title、文章、feed,可是不清楚这四种参数指令该如何下,在望博主指点,谢谢

不想听你唠叨×