WordPress主题系统支持为自定义文章类型创建自定义的模板。从WordPress 3.0版本开始,就已经支持为自定义文章类型的单篇文章显示创建自定义模板,而针对归档页面显示的自定义模板支持则是在3.1版本中添加的。
自定义文章类型 – 模板层级结构
WordPress会按照模板层级结构依次查找模板,并使用最先找到的模板文件。因此,如果您想为acme_product这个自定义文章类型创建自定义模板,一个不错的开始方式是复制single.php文件,将其保存为single-acme_product.php,然后对该文件进行编辑。
不过,如果您不想创建自定义模板文件,WordPress会使用主题中已有的文件,也就是archive.php、single.php以及index.php这些文件。
单篇文章及其归档页面分别可以通过single.php和archive.php模板文件来显示,
- 自定义文章类型的单篇文章会使用single-{post_type}.php模板
- 而它们的归档页面则会使用archive-{post_type}.php模板
- 如果您没有为该文章类型创建归档页面,可以传入参数BLOG_URL?post_type={post_type}
其中{post_type}指的是register_post_type()函数中的$post_type参数。
因此,对于上面的示例,您可以分别为单个产品文章及其归档页面创建single-acme_product.php和archive-acme_product.php这两个模板文件。
或者,您也可以在任何模板文件中使用is_post_type_archive()函数来检查当前查询是否对应某个给定文章类型的归档页面,同时使用post_type_archive_title()函数来显示该文章类型的标题。
自定义文章类型模板
- single-{post-type}.php
当访问者请求查看自定义文章类型的单篇文章时所使用的模板。例如,对于名为acme_product的自定义文章类型,显示其单篇文章时就会使用single-acme_product.php。 - archive-{post-type}.php
当访问者请求查看自定义文章类型的归档页面时所使用的模板。例如,对于名为acme_product的自定义文章类型,显示其文章归档时就会使用archive-acme_product.php。如果不存在archive-{post-type}.php模板,就会使用archive.php模板。 - index.php
当不存在针对该自定义文章类型的特定查询模板(single-{post-type}.php、single.php、archive-{post-type}.php、archive.php、search.php)时,就会使用index.php。
函数参考
- register_post_type():用于注册文章类型。
- is_post_type_archive():用于检查是否存在对应某个文章类型归档页面的查询。
- post_type_archive_title():用于显示或获取某个文章类型归档页面的标题。