WordPress是如何加载模板文件的

WordPress系统模板的定义非常方便,但是在定制模板之前,我们有必要知道WordPress的模板层次,了解WordPress是如何加载模板文件的,这将有利于开发模板时合理利用资源及提高工作效率。


万能的index.php


通过“wordpress主题构成”这篇文章,我们已知道一个最简单的WordPress主题只需要 style.css 和 index.php 文件即可。这代表着 index.php 可以是任何一个页面的模板,无论是首页,还是文章页,或是分类页,再或者是搜索结果页面,它都能完美胜任。


也就是说,当对应的模板不存在时, index.php 将是WordPress最后的底牌。


模板加载顺序


下面让我们来了解一下WordPress都是怎么加载模板的


首页


首先WordPress会先检查是否有静态首页,如果有静态首页,就会加载这个页面内容并通过 front-page.php 模板文件展示,如果没有这个模板文件,就会通过页面模板展示

如果没有静态首页,就会加载 home.php  

最新文章模板 如果没有 home.php 则加载 index.php模板

文章页


首先被考虑的是 single-{post_type}.php 这样一个模板文件(如文章类型是 product 那么对应的文件名就是 single-product.php )

如果找不到,那么就会加载 single.php 模板

如果连 single.php 模板都没有则加载 index.php 模板。

页面


首先被考虑的是自定义模板,也就是编辑页面时所选择的模板

如果没有自定义模板,则查找 page-{slug}.php 别名模板(如页面别名是 about 对应的文件名就是 page-about.php )

如果别名模板也没有就查找 page-{id}.php ID模板(如页面ID是 2 对应的文件名就是 page-2.php )

如果ID模板也没有那就是 page.php 模板了

如果连 page.php 模板都没有则加载 index.php 模板

分类页


首先被考虑的是 category-{slug}.php 别名模板(如分类别名是 news 对应的文件名就是 category-news.php )

如果没有别名模板则查找 category-{id}.php ID模板(如分类ID是 1 对应的文件名就是 category-1.php )

如果ID模板也没有那就是 category.php 分类模板了

如果 category.php 分类模板也没有则加载 archive.php 通用归档模板

如果连 archive.php 通用归档模板都没有则加载 index.php 模板

标签页


标签页模板加载顺序和分类页一样,只不过前缀不过 category 而是 tag (如 tag-{slug}.php)。

自定义分类法


有时候除了WordPress默认的分类目录和标签我们还需要其他的分类方法,这时候我们就会注册一个新的分类法,那么在此之前知道分类法的模板加载顺序也是十分必要的。以下说明假设自定义分类法是 people 这个名字:


分类法分类页首先被考虑的是 taxonomy-{taxonomy}-{term}.php 别名模板(如分类别名 teacher 对应的文件名就是 taxonomy-people-teacher.php )

如果没有别名模板,则加载该分类法归档页(如 taxonomy-people.php )

如果分类法归档页模板也没有则加载 archive.php 通用归档模板

如果连 archive.php 通用归档模板都没有则加载 index.php 模板

自定义文章类型


除了自定义分类法,有时候我们也需要自定义文章类型


自定义文章类型归档页首先被考虑的是 archive-{post_type}.php 别名模板(如文章类型是 product 那么对应的文件名就是 archive-product.php )

如果没有别名模板则加载 archive.php 通用归档模板

如果连 archive.php 通用归档模板都没有则加载 index.php 模板

作者归档页


首先被考虑的是 author-{nicename}.php 别名模板(如作者用户名是 steven 那么对应的文件名就是 author-steven.php )

如果没有别名模板则加载 author-{id}.php ID模板(如作者ID是 1 对应的文件名就是 author-1.php )

如果ID模板没有则加载 author.php 通用作者模板

如果通用作者模板也没有则加载 archive.php 通用归档模板

如果连 archive.php 通用归档模板都没有则加载 index.php模板

日期归档页


首先被考虑的是 date.php 日期归档模板

如果日期归档模板没有则加载 archive.php 通用归档模板

如果连 archive.php 通用归档模板都没有则加载 index.php 模板

搜索结果页


首先被考虑的是 search.php 搜索结果模板

如果没有搜索结果模板则加载 index.php模板

附件页


首先会按MIME类型加载模板(如 image.php, video.php, application.php,而 text/plain 类型则按顺序尝试加载 text.php, plain.php, text_plain.php 这三个文件。

如果没有对应的MIME类型模板则 attachment.php 附件模板(如没有 attachment.php 则加载 single-attachment.php )

如果没有附件模板则加载 single.php 文章页模板

如果连 single.php 文章页模板都没有则加载 index.php 模板

 


使用钩子修改模板


在某些使用场景(如插件),我们并不能直接修改模板文件,这时候我们可以使用钩子来实现修改模板文件,钩子名称是 {$type}_template 这样的格式,以下是对应的完整的钩子名称列表:


index_template

404_template

archive_template

author_template

category_template

tag_template

taxonomy_template

date_template

home_template

front_page_template

page_template

paged_template

search_template

single_template

text_template, plain_template, text_plain_template (all mime types)

attachment_template

comments_popup

以下是一个使用例子(让页面加载 single.php 文章页的模板):


function page_template_filter( $templates=''){

$templates=locate_template("single.php",false);

return $templates;

}

add_filter('page_template','page_template_filter');

模板页面判断


一般情况下,在一个特定的模板中我们能清楚知道应该怎么输出特定的样式和内容,但在一些通用模板中(如 header.php )我们想要知道用户当前访问的是哪个页面模板就需要借助WordPress内置的条件判断函数了,这些函数可以帮助我们判断当前是什么页面以方便加载不同的模板内容,如 is_home() 则是判断首页的条件标签,is_single() 则是判断文章页的条件标签,等等。



【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » WordPress是如何加载模板文件的
您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论