当访问者访问分类、标签或自定义分类法的超链接时,WordPress将按该分类法过滤文章,并将它们按照发布时间倒序显示。
默认情况下,此页面是使用index.php
模板文件生成的。您可以创建可选的模板文件来覆盖和优化index.php模板文件。本文将讲解如何使用和创建此类模板。
分类模板层次结构
WordPress按照模板层次结构确定的顺序来调用模板显示内容。
category.php,tag.php和taxonomy.php模板允许文章过滤通过分类以不同的方式从被视为未经过滤的文章或文章由不同的分类过滤。(注意:这里的文章是指任何文章类型-文章、页面、自定义文章类型等)。这些文件使您可以定位特定的分类法或特定的分类法项目。例如:
- taxonomy-{taxonomy}-{term}.php
- taxonomy-{taxonomy}.php
- tag-{slug}.php
- tag-{id}.php
- category-{slug}.php
- category-{ID}.php
因此,您可以在页面上使名为“news”分类的所有文章进行格式化,使它们区别于其他的分类存档。
archive.php模板提供控制的最简单的形式,为所有存档提供一种展示布局,显示所有文章列表。
分类
对于分类(category),WordPress会先查找category-{slug}.php文件。如果不存在,WordPress会寻找下一个层次级别的文件,category-{ID}.php,依此类推。如果WordPress无法找到任何专门的模板或archive.php模板文件,它将使用index.php来显示。
分类层次结构如下:
- category-{slug}.php:例如,如果分类的别名slug为“news”,则WordPress将查找名为category-news.php的文件。
- category-{ID}.php:例如,如果分类的ID为“ 6”,则WordPress将查找名为category-6.php的文件。
- category.php
- archive.php
- index.php
标签
对于标签(tag),WordPress会先查找tag-{slug}.php文件。如果不存在,WordPress会寻找下一个层次级别的文件tag-{ID}.php,依此类推。如果WordPress无法找到任何专用模板或archive.php模板文件,它将使用index.php来显示。
标签层次如下所示:
- tag-{slug}.php:例如,如果标签的别名为“sometag”,WordPress将查找名为tag-sometag.php的文件。
- tag-{id}.php:例如,如果标签的ID为“6”,WordPress将查找名为tag-6.php的文件。
- tag.php
- archive.php
- index.php
自定义分类法
自定义分类(Taxonomy)层次结构的工作方式与上面的分类和标签层次结构相似。WordPress寻找 taxonomy-{taxonomy}-{term}.php文件。如果不存在,WordPress会寻找下一个层次级别的文件,taxonomy-{taxonomy}.php,依此类推。如果WordPress无法找到任何专用模板或archive.php模板文件,它将使用index.php来显示。
自定义分类的层次结构如下:
- taxonomy-{taxonomy}-{term}.php:例如,如果该分类法名为“sometax”,而该分类法的一个分类项目为“someterm”,WordPress将寻找一个名为taxonomy-sometax-someterm.php的文件。
- taxonomy-{taxonomy}.php:例如,如果该分类法名为“sometax”,WordPress会查找名为taxonomy-sometax.php的文件
- taxonomy.php
- archive.php
- index.php
创建分类模板文件
现在,您已经决定需要基于分类法为内容创建自定义设计,那么从哪里开始呢?
最好从下一级文件中复制(如果存在),而不是从空白文件开始。如果您已经创建了archive.php,请创建一个名为category.php的副本,然后对其进行修改以适合您的设计需求。如果没有archive.php文件,请以主题的index.php副本为起点。
如果要创建任何分类法模板文件,请遵循相同的步骤。使用您的archive.php,category.php,tag.php或index.php的副本作为起点。
示例
现在,您已经在主题目录中选择了需要修改的模板文件,下面让我们看一些示例。
添加文本到分类页面
在分类页面顶部添加文本
假设您希望在分类页面的文章列表之前显示一些静态文本。“静态”是保持不变的文本,无论下面显示哪个文章,无论显示哪个分类。
打开文件,然后在“模板”文件的“循环”部分上方,插入以下代码:
<p>
这是显示在分类页面上面的静态文本。
</p>
该文本仅显示在显示该分类存档的页面上。
不同分类页面显示不同文本
如果要根据不同分类显示不同的文本怎么办?您可以将默认文本添加到主要的 category.php文件中,并创建特殊的category-{slug}.php文件,每个文件都有其自己的文本内容,但这会在您的主题中创建很多文件。其实,您可以使用条件标签,来减少文件的创建。
同样,在循环之前添加以下代码:
<?php if (is_category('Category A')) : ?>
<p>分类A的文本</p>
<?php elseif (is_category('Category B')) : ?>
<p>分类B的文本</p>
<?php else : ?>
<p>其他分类的文本。也可以留空</p>
<?php endif; ?>
此代码执行以下操作:
- 检查访问者是否已请求分类A。如果是,则显示第一段文字。
- 如果用户未请求分类A,而请求了分类B。如果是,则显示第二段文本。
- 如果没有请求以上两个分类,则显示默认文本。
仅在存档的第一页显示文本
如果您的文章数量超出了存档一页显示的数量,则该分类将分成多页。如果用户位于结果的第一页,则可能要显示静态文本。
为此,请使用PHP if语句查看WordPress变量 $paged
的值。
在“循环”上方添加下面的代码:
<?php if ( $paged < 2 ) : ?>
<p>这是分类存档首页的文本。</p>
<?php else : ?>
<?php endif; ?>
此代码将检查所显示的页面是否为存档的第一页。如果是,则显示第一页的文本。否则,将显示后续页面的文本。
修改文章的显示方式
摘要VS全文
您可以选择显示文章全文还是仅显示摘要。通过显示摘要,可以缩短存档页面的长度。
打开模板文件并找到循环中的:
the_content()
把它替换为
the_excerpt()
反之, 如果您的主题目前显示的是摘要,但您想显示全文,可替换the_excerpt()
为the_content()
。