WordPress主题开发教程手册 — 自定义文章类型和分类法
文章类型
WordPress 中有很多不同类型的内容,在 WordPress 数据库中,我们是通过 post_type 字段来区分这些内容的,所以这些内容类型通常被称为文章类型。WordPress 内置的文章、页面、媒体等数据都是一种文章类型。
除了这些内置的文章类型,我们还可以注册自定义文章类型来管理各种类型的内容。
文章类型存在的目的是把内容分配到合适的分类中——不至于把所有类型的内容都混杂在一起——这样更方便管理。在模板文件章节中,我们提到过,我们可以为每个文章类型设置模版来显示文章类型的内容,这是因为每个文章类型里面的内容都是明显区别于其他文章类型的,为他们设置各自的模版文件,方便我们在前端以合适的方式显示这个文章类型里面的内容。
默文章类型
WordPress 内置了开箱即用的 5 种文章类型,他们是:
- 文章
- 页面
- 媒体
- 修订版本
- 导航菜单
我们可以通过主题或插件修改、删除上面的内置文章类型,但是为了兼容性考虑,不建议删除 WordPress 内置的文章类型。
作为主题开发人员,我们常用的文章类型是文章,页面,附件和自定义文章类型。修订版本和导航菜单超出了本章节的范围,本手册稍后将对此进行详细说明。
文章
文章通常用于管理博客内容、新闻资讯等拥有分类属性、需要经常发布更新的内容。
- 按时间顺序反向显示,最新的文章显示在前面
- 有日期和时间戳
- 使用分类目录和标签组织文章
- 用于创建订阅源
- 可以使用自定义文章类型模版
用于显示文章的模版文件有:
single.php
和single-post.php
category.php
以及它的所有迭代tag.php
以及它的所有迭代taxonomy.php
以及它的所有迭代archive.php
以及它的所有迭代author.php
以及它的所有迭代date.php
以及它的所有迭代search.php
home.php
index.php
此外,主题开发人员可以根据需要显示文章类型 front-page.php
。
页面
页面是普通文章/订阅源之外的静态文章类型。他们的特点是:
- 非时间依赖,没有时间戳
- 未使用类别和/或标签进行组织
- 可以使用自定义页面模版显示
- 可以按层次结构组织 – 即某个页面可以是其他页面的父页面/子页面
用于显示页面的模版文件有:
page.php
以及它的所有迭代custom.php
以及它的所有迭代front-page.php
search.php
index.php
附件
附件通常用于在内容中显示图像、音乐、视频等多媒体内容,并可以链接到相关文件。他们的特点是:
- 包含通过 WordPress 媒体上传系统添加文件的信息(如名称或描述)
- 包括存储在 wp_postmeta 表中的元数据信息(包括大小,缩略图,位置等)
用于显示附件的模版文件有:
MIME_type.php
attachment.php
single-attachment.php
single.php
index.php
自定义文章类型
我们可以使用自定义文章类型创建自己的文章类型 。为了确保用户内容的可移植性,不建议在主题中创建自定义文章类型,如果需要使用自定义文章类型,应该通过插件实现。
我们可以在 WordPress插件开发手册中了解有关 创建自定义文章类型的更多信息 。
在插件中创建了自定义文章类型之后,我们可以通过以下模板可以显示自定义文章类型的内容:
single-{post-type}.php
archive-{post-type}.php
search.php
index.php
此外,通过使用自定义查询建立多个循环,我们可以在任何模板文件中显示自定义文章类型。
分类方法
分类目录,标签和分类方法听起来差不多,很容易混淆。
下面我们使用为美食菜谱网站创建的主题示例来帮助大家深入了解一下分类方法,标签和自定义分类法。
在这个菜谱网站上, 我们有早餐,午餐,晚餐,开胃菜,汤,沙拉和甜点这些分类。所以菜谱都可以用这些分类来区分,但有时候,用户可能需要搜索特定的东西,如红烧肉、回锅肉等。
红烧肉、回锅肉都是一个标签 ,他们是区分不同种类菜谱的另外一种更加具体的方法。
最后是自定义分类法。其实分类目录和标签都是分类法,是组织内容的一种方式。分类法是对 WordPress 中内容和数据进行分类的方法。当我们使用分类法时,我们可以将类似的东西组合在一起。分类法是指这些组合的总和。与文章类型一样,WordPress 中有一些默认分类法,我们也可以创建自己的分类法。
我们通常按照分类目录和标签对菜谱进行分类,但是,如果可以添加一些更为细致的分类,用户查找内容将更加方便。例如,有些用户可能需要按照烹饪时间来查找菜谱,我们可以创建一个烹饪时间的分类方法,然后添加 0-30 分钟,30 分钟到 1 小时,1 到 2 小时等分类法项目。此外,我们还可以按照烹饪方法对这些菜谱进行分类,如煎、烤、蒸、煮、炸等等。
默认分类法
WordPress 中的默认分类法是:
- 分类目录:组织文章内容的可分层的分类方法
- 标签:组织文章内容的不可分层的,扁平式的分类方法
- 文章格式:为文章创建文章格式的分类方法。我们可以在文章格式页面上了解更多相关信息 。
分类法项目
分类法项目是我们分类方法中的项目。例如,如果我们有一个动物分类法,我们可以在其中添加:狗,猫和羊等项目。我们可以通过 WordPress 后台添加分类法项目,也可以使用 wp_insert_term() 函数通过编程的方式添加分类法项目。
数据库架构
分类法和分类法项目存储在以下数据表中:
- wp_terms – 存储所有分类法项目
- wp_term_taxonomy – 将分类放项目放到分类法中
- wp_term_relationships – 将分类法与对象相关联(例如, 要某篇文章有某个分类目录,某些标签)
模板
WordPress 为分类目录,标签或自定义分类法提供了几种不同的模板层次结构。有关其结构和用法的更多详细信息,请参阅「分类模板」页面。
自定义分类法
我们可以在 WordPress 中创建新的分类法。例如,我们可能需要在书评网站上创建作者 分类,或 在电影网站上创建演员 分类。与自定义文章类型一样 ,建议将此功能放在插件中 。以确保了当用户更换主题时,其内容将保留在插件中。
我们可以在插件开发人员手册中阅读有关创建自定义分类的更多信息。