WordPress模板文件用法详细介绍
WordPress模板的加载机制非常灵活,可以精确的为每个页面定制不一样的模板,因此使用WordPress来搭建CMS站点是完全没有问题的。
并且,WordPress模板的重用性非常高,比如我们可以让所有页面共用一个头部模板header.php,但通过条件判断标签来为不同页面输出不同的关键词标签和描述标签内容。
主页模板
- home.php
- index.php
如果阅读设置中将首页显示设置为“您的最新文章”,那么主页优先加载home.php,如果home.php不存在,则加载index.php。事实上如果front-page.php存在,会最先加载front-page.php,但一般用不到front-page.php
首页模板
- front-page.php
- home.php
- page.php
- index.php
如果阅读设置中将首页显示设置为“一个静态页面”,那么加载顺序如上列表,这里需要注意page.php的加载优先级高于index.php,因为“一个静态页面”指定的就是一个Page页面。
文章页面模板
- single-{post-type}-{slug}.php:这里{post-type}是指文章类型,{slug}是指文章的别名。WordPress常用的两种Post Type:Post(文章)、Page(页面),你也可以自定义文章类型,不过自定义文章类型用得比较少,可能是太过于复杂,如无特殊需求一般不建议使用。示例:single-post-wordpress-template-hierarchy.php,其中wordpress-template-hierarchy是我当前文章的别名;
- single-{post-type}.php:这里{post-type}是指文章类型;
- single.php
- singular.php
- index.php
Page页面
- 自定义页面模板;
- page-{slug}.php:这里{slug}是指页面的别名。示例:page-about.php;
- page-{id}.php:这里{id}是指页面的ID。示例:page-2.php;;
- page.php
- singular.php
- index.php
分类页面
- category-{slug}.php:这里{slug}是指分类的别名。示例:category-resources.php;
- category-{id}.php:这里{id}是指分类的ID。示例:category-3.php;
- category.php
- archive.php
- index.php
标签页面
- tag-{slug}.php:这里{slug}是指标签的别名。示例:tag-wordpress-template-tags.php;
- tag-{id}.php:这里{id}是指标签的ID。示例:tag-28.php;
- tag.php
- archive.php
- index.php
自定义分类法
和自定义文章类型一样,需要使用自定义分类法的情况很少见,如果你只是制作一般的博客或CMS模板,不需要了解这方面的知识。
- taxonomy-{taxonomy}-{term}.php:这里{taxonomy}为自定义分类法名称,{term}为分类别名。示例:taxonomy-product-books.php
- taxonomy-{taxonomy}.php:这里{taxonomy}为自定义分类法名称。示例:taxonomy-product.php
- taxonomy.php
- archive.php
- index.php
自定义文章类型
- archive-{post_type}.php:这里{post_type}是指自定义文章类型的名称。示例:archive-product.php
- archive.php
- index.php
作者页面
- author-{nicename}.php:这里{nicename}是指作者的昵称;
- author-{id}.php:这里{id}是指作者的ID;
- author.php
- archive.php
- index.php
日期归档页面
- date.php
- archive.php
- index.php
搜索结果页
- search.php
- index.php
404页面
- 404.php
- index.php
附件页面
- MIME_type.php:用MIME类型作为文件名称,例如:image.php, video.php
- attachment.php
- single-attachment.php
- single.php
- index.php
嵌入型模板
- embed-{post-type}-{post_format}.php
- embed-{post-type}.php
- embed.php
嵌入型模板可以用get_template_part()函数来加载,例如:
get_template_part( 'embed', 'content' );
通常搜索结果页和分类、标签、日期归档页的展示形式相同,因此我将内容输出的代码放在同一个文件中,再在这些模板中加载这个嵌入型模板。
其他模板
- header.php:头部模板,请参考模板标签get_header的用法
- footer.php:页脚模板,请参考模板标签get_footer的用法
- sidebar.php:侧边栏模板,请参考模板标签get_sidebar的用法
- comments.php:评论模板,请参考模板标签comments_template的用法
- searchform.php:搜索表单模板,一般不需要。请参考模板标签get_search_form的用法
- functions.php:函数文件,可以将你主题需要用到的自定义函数放在这个文件中。
从以上内容可以看出,许多页面都有共同模板区,我们可能通过这个特点减少模板制作量,例如:分类、标签、日期归档页通常是同样的展现形式,因此只需要archive.php就够了。