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
当访客从自定义文章类型请求单个文章时使用的模板。例如,single-acme_product.php
将用于显示名为acme_product
的自定义文章类型的单个文章。 - archive-{post-type}.php
当访客请求自定义文章类型存档时,将使用该文章类型的存档模板。例如,archive-acme_product.php
将用于显示名为acme_product
的自定义文章类型的文章存档。如果archive-{post-type}.php
不存在,将使用archive.php
。 - search.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():显示或检索文章类型存档的标题。