搜索结果页
首先被考虑的是 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 模板
模板层次图
上面用文字详细讲述了WordPress模板的加载顺序,尽管详细,但还不如一张信息图更为直观,以下就是WordPress的模板层次(2)结构图。
使用钩子修改模板
在某些使用场景(如插件),我们并不能直接修改模板文件,这时候我们可以使用钩子来实现修改模板文件,钩子名称是 {$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() 则是判断文章页的条件标签,等等。