对循环的工作方式有一些疑问(尝试调试它)

时间:2014-08-05 作者:AndreaNobili

我是WordPress开发方面的新手(同样在PHP开发方面,我来自Java和C)。今天,我安装了Aptana并配置XDebug来检查TwentyTwelve 主题

特别是,我试图理解WordPress如何在循环中加载帖子(消除bug)。

所以,到目前为止,我只知道如何在WP主题中创建循环,但我不知道它到底是如何工作的。

因此,在第2122页中,我找到了post循环,这段代码片段:

<?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( \'content\', get_post_format() ); ?>
<?php endwhile; ?>
据我所知,循环由while() 循环,其中have_posts() 结果是执行while主体的条件。

好的,下面的问题很可能与我对PHP的无知有关,但是这个构造到底意味着什么呢

<?php while ( have_posts() ) : the_post(); ?>
have_posts() 是在while中执行的条件,但: the_post();

the_post() 调用循环的第一个操作还是什么?

然后我在have_posts() 在查询中定义的函数。php文件。

function have_posts() {
    global $wp_query;

    return $wp_query->have_posts();
}
确切的查询是什么。php文件?这是一门课还是什么?看着它的代码,我觉得它不是一个类。为什么?

到底代表了什么$wp_query 变量它是物体还是什么?(PHP不是类型化的,所以我怎么知道变量包含什么?)

此操作的含义:

$wp_query->have_posts();
我认为这是另一个版本的have_posts() 函数(定义在query.php文件中),用于检查是否存在要显示的其他帖子或它们是否已结束。

但具体如何工作?阅读PHP OO文档-> 运算符调用对象的方法,但我不知道$wp_query 是一个对象,或者如果在此内容中-> 操作员有另一种感觉。。。

你能帮我弄清楚它到底是怎么工作的吗?

1 个回复
最合适的回答,由SO网友:Sri 整理而成

<?php
if (have_posts()) : while (have_posts()) : the_post();                                     endwhile;
 else:
 _e(\'No blog found.\', \'polymer\');
endif;
?>
if(have_post) 条件是检查页面是否包含post,while(have_posts) 如果回路中有多个post显示,the_post() 用于显示帖子if(have_post) 条件失败,将转到else 环如果还有任何疑问,请告诉我。。。。。

结束

相关推荐

WP_QUERY:将Category__In和Tag__In混合在一起

我正在为我的主题创建一个“相关帖子”部分,基于wpbeginner.com. 它在选择职位时提供了两种选择:属于同一类别的职位,使用category__in, 或具有相同标签的,使用tag__in. 如果你愿意的话,有没有可能把它们放在一个大的搅拌罐里,然后从所有的帖子中挑选出来?我指的不是那些具有相同类别和相同标签的,而是那些具有或的。