这是一个相当宽泛的问题。我不会在这里详细介绍核心代码,您需要阅读我将提供的链接。我会尽量保持我的回答甜美、简短和有用:-)
以捆绑主题Twenty14为例,当您打开任何页面模板时,都会发现这段代码
if( have_posts() ) :
while( have_posts() ) : the_post();
<----loop elements---->
endwhile;
endif;
这是您的循环,它基本上显示spesific模板上主循环的查询信息。这就是循环所做的一切,它显示主查询(或自定义查询,如果有)检索到的内容。
在何处显示内容由Template Hierarchy. Wordpress严重依赖于这种层次结构。如果您了解了主查询的工作原理,请阅读Query Overview) 您将看到,主查询使用此模板层次结构来决定要使用哪个模板以及要从数据库中检索哪些信息,这就是为什么信息会因类别而异的原因。php和作者。php,尽管你的循环和你说的完全一样
根据你的问题
为什么相同的php文件会产生不同的结果?在我的示例中,“sample page.php”将显示“页面内容”,而“home.php”将显示“最近的帖子”
上述信息基本上涵盖了这一部分,以及主要查询使用的post_type=page
当它对页面模板进行查询时,以及post_type=post
在主页上。php,这是最大的区别之一
如果我们只想显示“页面内容”,为什么需要“while”循环
这个while()
页面模板上不需要循环。您将只有一篇文章要显示。
如果我们想在模板页面中显示“最近的帖子”。为什么我们需要先提供一些查询?
默认情况下,主查询查询post_type=page
对于页面模板,不是post-type=post
. 这就是为什么默认情况下,您不能在页面上显示“最近的帖子”。为此,您需要使用运行自定义查询WP_Query
或者使用pre_get_posts
EDIT
你也可以去看看
my answer 欲了解更多信息