访问者点击类别,标签或自定义分类法的超链接时,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 因此,您可以在名为新闻的动物分类中设置与其他类别中过滤的帖子不同的页面上的所有帖子。 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: 例如,如果标签的命名为“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的副本作为起点。 ## 例子 现在,您已经在主题目录中选择了需要修改的模板文件,我们来看一些例子。 ## 将文本添加到类别页面 静态文本上面的帖子#Static Text上面的帖子 假设您希望在类别页面上的帖子列表之前显示一些静态文本。 “静态”是保持不变的文字,无论下面显示哪些帖子,无论显示哪个类别。 打开您的文件和上面的模板文件的循环部分,插入以下代码: ``` <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 else : ?> <?php endif; ?> ``` 此代码询问显示的页面是否是归档的第一页。 如果是,则显示第一页的文本。 否则显示后续页面的文本。 # 修改帖子的显示方式 ## 摘录与全职 您可以选择是否显示完整的帖子或只是摘录。 通过显示摘录,缩短存档页面的长度。 打开你的文件并找到循环。 寻找: - the_content() 并替换为: - the_excerpt() 如果您的主题显示摘录,但是要显示完整的内容,请将the_excerpt替换为the_content。