在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变量的成员。









楼主研究的够透彻,不过wp后天太慢,效率没有国产的程序挖掘的深。
老张 回复:
十一月 9th, 2010 at 10:28 上午
@汽车膜, 是啊
楼主确实研究的很透彻啊,不知楼主对attachment研究的如何!
老张 回复:
十一月 9th, 2010 at 10:29 上午
@jalena, attachment是什么?
博主对wp理解很深啊,我最近正好也看到这段loop,对其中一个问题很不解,不知道隔了这么久,博主能否阅读到我这个留言。
博主文中提到$post变量是在the_post()之后给予赋值的。
但是我发现我在模板文件index.php的最上面,也就是在get_header()之前,这里显然还没有调用到have_posts()和the_post()吧,我发现在这里直接使用print_r($post),居然能直接打印出当前页面的文章信息!这样就和博主所说的,甚至网上大部分关于the loop的解释矛盾了,本人甚是不解,望指教,谢谢~
博主对wp理解很深啊,我最近正好也看到这段loop,对其中一个问题很不解,不知道隔了这么久,博主能否阅读到我这个留言。
博主文中提到$post变量是在the_post()之后给予赋值的。
但是我发现我在模板文件index.php的最上面,也就是在get_header()之前,这里显然还没有调用到have_posts()和the_post()吧,我发现在这里直接使用print_r($post),居然能直接打印出当前页面的文章信息!这样就和博主所说的,甚至网上大部分关于the loop的解释矛盾了,本人甚是不解,望指教,谢谢~
请教博主,以下问题可能与内容稍不相干,因为小弟想使用js来调用wordpress的首页、title、文章、feed,可是不清楚这四种参数指令该如何下,在望博主指点,谢谢