模板文件是 WordPress 网站的基础,它们就像拼图一样生成你的网页。有些模板 (例如头部和底部模板文件) 应用在所有的网页上,还有一些模板只会在特定条件下才会用到。
传统的网页包含两个文件:
- XHTML 页面 构建网页的框架和内容;
- CSS 样式表 决定网页的风格表现。
在 WordPress 中 (X)HTML 结构和 CSS 样式表是固定的,但是网页中的内容是由各个模板文件在后台生成的。主题文件和样式表存储在一起就成为了一个 WordPress 主题。
WordPress 的页面结构
一个简单的 WordPress 网页由三个部分组成:头部结构、内容结构、底部结构。这些结构都是由你当前使用的 WordPress 主题模板文件生成的。
- 头部包含你的 XHTML 网页顶部的所有信息,即<head> 标签,还有例如<doctype>, <meta> 标签和指向样式表的链接。它还包含了<body> 标签和你博客头部中可见的部分。 (通常包括您网站的名称,也可以包括导航菜单、 logo 、网站介绍等等信息) 。
- 底部一般是在你的页面最下方,包含了一些相关信息,像通往其它页面的链接或者你网站的分类导航菜单,版权和联系方式等其它信息。
WordPress 基本模板文件
一个 WordPress 主题是从位于你的主题所在路径里的 index.php 模板文件开始的。这个文件有两个主要功能:
- 包含或者调用其它模板文件;
- 包含 WordPress 主循环以从数据库获取信息 (日志、页面、分类等等信息) 。
在我们这个简单的页面结构里,我们只需要包含两个额外的模板文件:头部和底部,即 header.php 和 footer.php 。调用它们的模板标签看上去像这样:
<?php get_header(); ?> <?php get_footer(); ?>
为了显示你博客的日志和页面 (以及定义如何显示它们),你的 index.php 文件必须在头部与底部调用之间运行 WordPress 主循环。
更加复杂的页面结构
许多 WordPress 主题包含一个或几个侧边栏以包含导航功能和关于你网站的更多信息。侧边栏是 sidebar.php 模板文件生成的。可以用这个模板标签将它包含进你的 index.php 模板文件:
<?php get_sidebar(); ?>
肉在哪里?
这里请注意,我们没有使用模板标签来获取网页的内容,那是因为内容是在 index.php 模板文件中的 WordPress 主循环中生成的。
同时也请注意,主题的样式表决定了头部、底部、侧边栏和内容部分在用户浏览器上显示的样子和位置。更多的关于 WordPress 主题和网页设计的信息请参见博客设计与布局.
模板文件中的模板文件
你已经看到了 WordPress 是怎样在 index.php 模板文件中包含标准模板文件 (头部、底部和侧边栏) 的。你也可以在任何模板文件中包含其它的模板文件。
例如,sidebar.php 中可以包含一个生成搜索栏的模板文件 searchform.php 。因为这不是一个 WordPress 的标准模板文件,所以代码有些不同:
<?php include (TEMPLATEPATH . '/searchform.php'); ?>
为了包含文件,我们可以使用 PHP 命令 include 这个命令需要知道目标文件的具体路径 (TEMPLATEPATH 是一个 WordPress 中的可以指向主题模板文件路径的特殊变量) 。
多数 WordPress 主题包括各种包含其他模板的模板文件,以生成网站上的网页。下面这些模板文件就是一个 WordPress 网站的主模板 (index.php) 可以包含的典型文件:
- header.php
- theloop.php(内容)
- wp-comments.php
- sidebar.php
- searchform.php
- footer.php
特殊的模板文件
WordPress 网站的网页有两种核心页面模式。单独日志模式用来显示一个单独的日志。多日志模式用来显示多个日志或日志摘要,这种模式同样适用于分类存档、日期存档、作者存档和 (通常情况下) 你博客主页的正常模式。你可以使用 index.php 模板文件来生成所有这些模式或是依靠 WordPress 的模板分级模式根据不同的情况来选择不同的模板文件。
WordPress 模板分级模式解决了以下问题:
WordPress 使用哪个模板文件显示特定类型的页面?
WordPress 会根据标准名称自动识别某些特定模板文件,并使用它们显示特定的网页。例如,当用户点击日志标题的时候,WordPress 会认为用户希望在单独日志页面上打开文档。于是 WordPress 的模板分级模式会优先使用 single.php 模板文件生成页面 (如果你的主题里有 single.php 的话),而不是使用 index.php 模板文件生成。同样,如果用户点击了特别分类的链接,WordPress 将使用 category.php 模板文件来显示,如果这个模板文件不存在,WordPress 将寻找 archive.php 模板文件,如果这个模板文件也不存在,WordPress 将使用主模板 index.php 来显示页面。你甚至可以使用特殊的模板文件来显示特殊的分类 (更多信息请参见分类模板) 。
模板文件技巧
这里有一些创建 WordPress 模板文件的技巧:
跟踪开始标签和结束标签
模板文件包含了 XHTML 标签和 CSS 引用。 HTML 元素和 CSS 引用贯穿于模板文件,从一个文件开始,在另一个文件结束。例如,html 和 bodyHTML 元素通常开始于 header.php 文件,结束于 footer.php 文件。许多 WordPress 主题使用 HTML 的 div 元素,它可以跨越许多个文件。例如,内容页的主 div 可能开始于 header.php 文件,而结束于 index.php 文件或 single.php 文件。 如果你在开发、设计或修改主题,跟踪 HTML 元素从哪里开始到哪里结束,这会是很复杂的事情。使用评论在模板文件中对大量标签的开始和结束进行标注,于是你可以跟踪不同 div 的不同结束部分。
在不同的视图下测试模板文件
如果你对评论、侧边栏、搜索栏或是其它模板文件进行了改动,请确保使用不同的网页视图测试这些模板文件 (单篇日志、不同类型的存档和页面) 。
标注主题变动
如果你是为公开发行设计主题,要记住那些下载你的主题的人可能会想要为他们自己的应用而稍微修改一下主题。因此,在模板文件中修改了的地方留下笔记,将是非常有帮助的。在主题的主样式文件中加上评论也是一个好主意。 (例如在你的 header.php 文件或 HTML 标签中) 。
在你身后关闭标签之门
如果你在一个模板文件中开始了一个 HTML 标签或者 div ,要确保你在另一个模板文件中关闭了这个标签。 WordPress 论坛上有许多类似 「我的主题发生了什么」 这样的问题,这些问题基本上都产生于他们在头部模板文件中开始了一个标签,而在没有关闭标签的情况下删除了底部模板文件。检查你的标签,确保它们都是闭合的。 (这里有一个好办法来确认这一切是否正确,那就是使用 HTML 校验器来查看你的单独和存档页面。)
模板中的 CSS 样式
你可以在你的模板中的任何一个地方自由的使用你喜欢的 HTML 和 CSS 的标签和样式。然而,我们鼓励你使用标准的 WordPress 主题结构 (参见网站结构 1.5) 。这可以使你的用户更加容易理解你的主题。
但是,这个结构是可以被改变的。例如,你可以将搜索栏放置在你的头部文件里;也许你的设计中根本就不包含底部文件,那你就可以完全忽略它的存在。