WordPress循环和模板文件

时间:2013-02-17 作者:TheWebs

我很好奇WordPress如何知道如果我有一个类别。php,并在其中进行基本循环,当我单击类别A时,我会得到A的所有帖子。我之所以问这个问题,是因为我看到的主题只有一个索引。php,当你点击这些主题中的类别A时,你会看到A的所有帖子,而它们没有类别。php文件。

有什么诀窍可以做到这一点吗?

因为如果你这样做:

类别php及其内部功能:

if(have_posts()){
    while(have_posts()){
        the_post();
    }
}
您将获得您单击的任何类别链接的所有帖子。然而,正如所述,有些人只有索引。当你点击一个类别链接时,你会得到该类别的所有帖子,而不管你点击的是哪个类别。

与global post\\u id非常相似,是否有全局category\\u id可供查询?

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

如果你看the template hierarchy 对于类别,您将看到以下内容:

类别{slug}。php类别{id}。php类别。php存档。php索引。php正如Milo所说,这些模板只是使用循环来显示已查询的内容,因此模板本身在层次结构的加载顺序之外并不重要。

SO网友:Tom J Nowell

指数php定义了如何显示帖子循环

类别php也做了同样的事情,但在显示类别归档文件时会包含它

WordPress将寻找它能找到的最具体的模板,并向后工作,直到找到一个存在的文件,其中包含索引。php是最通用的。

So long as the template implements the main loop, it will function correctly. Which template is used has no bearing on the kind of post displayed. Templates are purely visual/aesthetic

帖子的实际获取,无论是分类帖子、单个帖子、页面、日期存档等,都是使用查询变量完成的,而且早在WordPress选择使用哪个模板之前就已经完成了。

重写规则将运行一些正则表达式,从URL中提取一些数据位

  • 基于这些查询变量,进行检查,并填写“is\\U main\\u loop”和“is\\u search”等内部值

    那么为什么我们有类别呢。php?我们只需要索引。php,但也许我们希望我们的类别档案看起来与我们的主列表不同?也许我们想让网站从单个帖子中寻找不同的列表?而不是在索引中设置一个大的if-else。php例如,如果列表这样做,否则如果类别列表这样做,等等WordPress拥有模板继承权。

    模板纯粹是关于视觉和html标记的。它们是表示,与数据是什么或数据来自何处无关。

    请参阅此方便的流程图,了解WordPress将使用什么:

    enter image description here

    最后,用一个类比来说明你的问题:

    你经营着一家制作桌子、方桌的公司,雇佣了5名木匠和一名喜欢方桌的设计师。

    有一天你雇了一个新的设计师和一个木匠。这位新设计师喜欢圆桌。你注意到,在给新木匠这些设计之后,他制作了圆形桌子。What is so special that this carpenter makes circular tables, when the others will make circular tables too if I fire him?

  • SO网友:Milo

    在加载模板之前,解析请求并查询数据库。循环只需迭代post结果,不管它们是什么。模板是根据请求的结果选择的,模板的内容与主查询包含的内容无关。

    为了更好地了解它是如何工作的,我建议查看Action Reference 并在源代码中搜索每个操作,以查看WordPress在加载模板之前正在执行的操作。尤其parse_requestparse_query.

    结束

    相关推荐

    Multiple loops are not reset

    我可爱的同事们再次设计了一款让我很难在Wordpress中找到它的东西。令人惊讶的是,这是我以前做过多次的事情;在一个页面上有最近的帖子和页面内容。主页是一个页面。在页面内容上方有三篇最近的帖子。对于帖子,我需要在<!--more--> 标签这个循环似乎工作得很好。稍后,在模板中,我循环查看实际页面内容。无论我做什么,它总是给我不可靠的结果。这是我的索引的精简版本。php/页。php模板(它们恰好相同):<div id=\"content\"> <?php g