如果我们有需要开发一款适合大众且符合官方要求的WordPress主题,我们肯定需要学习WP官方的文件结构,比如哪个文件需要命名什么,以及结构优先级。这里,简单做一个整理WordPress主题文件结构,适合有后面开发主题的时候用到。
1、模板文件
模板文件是 WordPress 定义好的一系列文件,无法对其重命名,不过可以直接使用这些名字来创建文件。具体的模板文件列表如下:
index.php:主模板,这个模板必须提供。
comments.php:评论模板。
front-page.php:首页模板,当切换为静态首页时,可以选择这个。
home.php:主页模板,默认的首页。如果开启了静态首页,这个模板则用于展示最新的文字。
single.php:单独页面模板,显示单独的一篇文章时被调用。对于这个以及其他的请求模板,如果模板不存在会使用index.php。
single-{post-type}.php:自定义单独页面模板。例如,single-books.php 展示自定义文章类型为 books的文章. 如果文章类型未被设置则使用index.php。
page.php:页面模板,独立页面调用。
category.php:分类模板。分类页面调用。
tag.php:标签模板,标签页面调用。
taxonomy.php:术语模板,请求自定义分类法的术语时使用。
author.php:作者模板,作者页面调用。
date.php:日期/时间模板,按时间查询时使用的模板。
archive.php:存档模板,查询分类,作者或日期时使用的模板。需要注意的是,该模板将会分别被category.php、author.php、date.php所覆盖(如果存在的话)。
search.php:搜索结果模板,显示搜索结果时使用的模板。
attachment.php:附件模板,查看单个附件时使用的模板。
image.php:图片附件模板,当在 WordPress 中查看单个图片时将调用此模板,如果不存在此模板,则调用 attachment.php 模板。
404.php:404 错误页面模板,当 WordPress 无法查找到匹配查询的日志或页面时,使用 404.php 文件。

这张图说明了 WordPress 的模板加载顺序。使用这张图,来说明模板到底是按照怎样一个顺序加载的。这张图的查看的顺序是从左向右查看,举个例子,当我们需要查看一个目录的页面时,首先,这个页面是一个归档类型的页面(archive),然后继续向右查找,找到我们要看的目录归档(Category Archive);然后继续向右看,我们看到指向了category-$slug.php,这个文件是变量文件, WordPress 会根据我们目录的别名(slug),查询是否存在对应的文件,如果有这个文件,就进行渲染,不再输出。如果不存在,则继续向右查找;继续向右看到了 category-$id.php,当到了这一步后, WordPress 会根据目录的 ID 查询,是否存在对应的文件,如果存在则继续查找,如果不存在,则继续向右查找。继续向右,看到了淡蓝色的 category.php,如果这个文件存在,则进行渲染。如果不存在,则继续向右查找,查找到 archive.php,最后一直会查找到 index.php。
2、加载顺序
参考来自:https://www.easywpbook.com/theme/struct.html 文字版本的加载顺序。
上面的版本每次都要查询图片可能不是很方便,这里我总结了一份文字版本的加载顺序,读者可以根据这个加载顺序来制作模板。加载顺序从序号小的开始,如果查不到这个文件,则查询序号更大的文件是否存在。
主页
home.php
index.php
文章页面
single-$posttype.php
single.php
index.php
页面
自定义页面模板
page-$slug.php
page-$id.php
page.php
index.php
分类页面
category-$slug.php
category-$id.php
category.php
archive.php
index.php
标签页面
tag-$slug.php
tag-$Id.php
tag.php
archive.php
index.php
作者页面
author-$nickname.php
author-$Id.php
author.php
archive.php
index.php
日期页面
date.php
archive.php
index.php
搜索页面
search.php
index.php
404 页面
404.php
index.php
附件页面
$mimetype.php
attachment.php
single.php
index.php
3、自定义
我们还可以根据需要自定义模板。
<?php
/*
Template Name: 无侧边栏页面模板
*/
根据需要创建页面头部,然后在添加页面的时候可以引用这个自定义的模板。