当访客点击类别、标签或自定义分类法的超链接时,WordPress 会显示按该分类法过滤并按倒序排列的文章页面。
默认情况下,此页面是使用 index.php 模板文件生成的。您可以创建可选的模板文件来覆盖和细化 index.php 模板文件。本节将解释如何使用和创建此类模板。
分类法模板层级
WordPress 按照由 模板层级 确定的顺序显示文章。
category.php、tag.php 和 taxonomy.php 模板允许对按分类法过滤的文章与未过滤的文章或按不同分类法过滤的文章进行不同的处理。(注意:post 指任何文章类型——文章、页面、自定义文章类型等)。这些文件可让您针对特定的分类法或特定的分类法术语。例如:
- taxonomy-{taxonomy}-{term}.php
- taxonomy-{taxonomy}.php
- tag-{slug}.php
- tag-{id}.php
- category-{slug}.php
- category-{ID}.php
因此,您可以将名为 news 的动物分类法中的所有文章格式化为与其他类别过滤的文章外观不同的页面。
archive.php 模板提供了最通用的控制形式,为所有存档提供布局;也就是说,显示文章列表的页面。
类别
对于类别,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
标签
对于标签,WordPress 会查找 tag-{slug}.php 文件。如果不存在,WordPress 则会查找下一个层级级别的文件 tag-{ID}.php,依此类推。如果 WordPress 找不到任何专用模板或 archive.php 模板文件,它将恢复默认行为,使用 index.php。
标签层级如下所示:
- tag-{slug}.php:例如,如果标签的 slug 名为“sometag”,WordPress 会查找名为 tag-sometag.php 的文件。
- tag-{id}.php:例如,如果标签的 ID 为“6”,WordPress 会查找名为 tag-6.php 的文件。
- tag.php
- archive.php
- index.php
自定义分类法
自定义分类法层级的工作方式与上述类别和标签层级类似。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 副本作为起点。
示例
现在您已经选择了需要修改的主题目录中的模板文件,让我们看看一些示例。
向类别页面添加文本
文章上方的静态文本
假设您希望在类别页面(s)的文章列表之前显示一些静态文本。“静态”是指无论下方显示哪些文章以及显示哪个类别,该文本都保持不变的文本。
打开您的文件,在模板文件的 循环 部分之上,插入以下代码:
<p>This is some text that will display at the top of the Category page.</p>此文本仅在显示该类别中文章的存档页面上显示。
某些类别页面显示不同文本
如果您想根据访客使用的类别页面显示不同的文本怎么办?您可以在主 category.php 文件中添加默认文本,并创建每个具有自己版本文本的特殊 category-{slug}.php 文件,但这会在您的主题中创建大量文件。相反,您可以使用条件标签。
同样,此代码将添加到循环之前:
<?php if ( is_category( 'Category A' ) ) : ?>
<p>This is the text to describe category A.</p>
<?php elseif ( is_category( 'Category B' ) ) : ?>
<p>This is the text to describe category B.</p>
<?php else : ?>
<p>This is some generic text to describe all other category pages, I could be left blank.</p>
<?php endif; ?>此代码执行以下操作:
- 检查访客是否请求了类别 A。如果是,则显示第一段文本。
- 如果用户没有请求类别 A,则检查类别 B。如果是,则显示第二段文本。
- 如果未请求任何内容,则显示默认文本。
仅在存档的第一页上显示文本
如果您的文章数量超过存档的一页,类别将分为多个页面。也许您希望在用户处于结果的第一页时显示静态文本。
为此,使用查看 $paged WordPress 变量值的 PHP if 语句。
将其放在循环之上:
<?php if ( $paged < 2 ) : ?>
<p>Text for first page of Category archive.</p>
<?php endif; ?>此代码询问显示的页面是否为存档的第一页。如果是,则显示第一页的文本。否则,显示后续页面的文本。
修改文章的显示方式
摘要与完整文章
您可以选择是显示完整文章还是仅显示摘要。通过显示摘要,您可以缩短存档页面的长度。
打开您的文件并找到循环。查找:
the_content()并将其替换为:
the_excerpt()如果您的主题正在显示摘要,但您想显示完整内容,请将 the_excerpt 替换为 the_content。