目录
1 为什么要开发WordPress主题?
2 剖析主题
3 主题样式表单
4 主题函数文件
5 主题模板文件
6 基本模板
7 基于查询的模板
8 主题模板文件列表
9 从模板中引用文件
10 从模板中引用文件
11 自定义模板
12 主题开发总结性原则
13 相关条目
为什么要开发WordPress主题?
WordPress主题由一系列文件和样式表单组成,这些文件和样式表单共同作用生成WordPress网站的外观。每个主题都不同,用户可以通过这些主题随心所欲地更换自己网站的外观。那么为什么我们要自己开发WordPress主题呢?
为自己的WordPress网站打造独一无二的外观
利用模板、模板标签和WordPress Loop创作不同的网页表现形式和网站外观
为网站特殊功能如类别页面和搜索结果页面提供其它模板
轻松切换两种网站外观设计,或利用主题、样式转换器来改变网站外观
设计WordPress主题,然后公开发布,让大家都看到自己的作品
WordPress主题也有很多好处:
主题将样式表单和模板文件从系统文件中独立出来,这样网站升级时就不会对网站的视觉外观造成大幅影响
每个主题的呈现样式和网页布局都是独一无二的
通过主题更换,WordPress网站可以快速改变其外观
用户再也不必为了让网站表现得清新自然而清除CSS、HTML、PHP代码
我们自己开发WordPress主题原因还在于:
这是一个深入学习CSS、HTML/XHTML、PHP的好机会
同时也是一个积累CSS、HTML/XHTML、PHP实践经验的机会
开发主题可以发挥人的创造性
开发主题是一个充满乐趣的过程(大部分时候)
将主题公开发布,与其他用户分享自己的劳动成果,回馈WordPress社区
剖析主题
WordPress主题被保存在wp-content/themes/中。所有主题的样式表单文件、模板文件、可选函数文件(functions.php)以及图片文件都存放在themes文件夹中。例如,名称为“test”的文件应该存储在wp- content/themes/test/中。
安装WordPress时系统默认配置两个主题,主题Classic和主题Default。这两个主题类型不同,生成页面显示结果使用的也是不同的函数和标签。用户可以仔细研究这两个主题的文件,为自己创建主题文件打下基础。
WordPress主题由三种主要文件与若干图片组成。第一种文件是样式表单style.css,style.css决定网页的外观。第二种是可选函数文件functions.php。还有一种则是模板文件,模板文件决定网页显示信息的生成方式。下面我们逐个分析这些文件。
主题样式表单
样式表单style.css不仅要提供主题的[[]CS]S样式信息,同时也必须以注释形式提供主题的详细信息。所有主题在注释头中列出的信息都必须是唯一的,不能与其它主题相同。相同的注释头信息会导致主题选择对话框运行出错。仿照已有主题时,注意更改注释头信息。
下面是一个样式表单的前几行代码,也就是样式表单的“页眉”部分,假设其中的主题名为“Rose”:
/*
Theme Name: Rose
Theme URI: the-theme's-homepage
Description: a-brief-description
Author: your-name
Author URI: your-URI
Template: use-this-to-define-a-parent-theme--optional
Version: a-number--optional
.
General comments/License Statement if any.
.
*/
这是一个简单的主题,主题只有一个style.css文件,可能还有若干图片(如果存在图片)。为了创建这样的主题,用户首先要编辑模板文件,指定一系列模板供主题继承使用。例如,如果希望 主题“Rose” 从主题“test”中继承模板, 可以在Rose主题的style.css文件的代码开始部分加上 Template: test。
这表示,“test” 是“Rose”的父模板, “Rose” 只由一个style.css文件和若干相应的图片构成,这些文件和图片都被存储在wp-content/theme/Rose文件中。此外(从 WordPress 2.7起,) 子主题中也可包含模板文件,用户可以在控制板中将模板文件选项设为normal,若子主题的模板文件与父主题的模板文件名相同,子主题模板文件会改写父主题模板文件。
WordPress利用style.css文件中的注释头代码来验证某个主题,然后将该主题作为可用主题与其它所有已安装主题共同显示在管理面板>外观>主题中。
注意:定义父主题时,请务必在注释头Template部分使用style的文件名。例如,如果要使用WordPress默认主题(Default)的父模板,编写代码时应该使用Template: default,而不是Template: WordPress Default,Default是主题的文件名。
主题函数文件
主题可以使用函数文件,该函数文件的文件名为functions.php,位于主题的子目录中。functions.php的功能类似于插件,如果使用的主题中有functions.php文件,WordPress初始化(管理界面和其它界面)时会自动加载该文件。functions.php文件的建议用法如下:
定义主题模板文件中使用的函数
生成管理界面,让用户选择主题的颜、风格以及其他样式
WordPress默认主题“Default”中带有一个定义函数的functions.php文件和一个管理界面,用
户可以作为学习示例。在WordPress手册的“常用函数”中可以查到更多functions.php文件的相关信息。
主题模板文件
模板是一种用来生成用户所请求页面的PHP源文件。
WordPress允许用户为网站不同部分定义不同的模板;但即使网站不完全拥有这些不同的模板也可以正常运行。系统根据模板层级与特定主题中的可用模板来选取并生成模板。主题开发人员可以规定使用模板所执行的总定制数量。例如在某种极端的情况下,可能只能用index.php这一个模板文件作为网站生成的所有页面的模板。普通情况下,用户使用不同的模板文件生成不同页面,这样可以达到最佳自定义效果。
基本模板
一个WordPress主题至少包括两个文件:
style.css
index.php
这些文件都位于主题文件中。index.php模板文件灵活易用,可以存储关于页眉、侧边栏、页脚、内容、类别、查、错误以及访问者请求的页面的所有引用信息。index.php还可以划分成模块化的模板文件,每个模块分担部分系统任务。用户不指定模板文件时,WordPress会使用内置的默认文件。例如,如果用户没有comments.php 或comments-popup.php模板文件,WordPress会自动通过模板层级选择wp-comments.php 以及 wp-comments-popup.php模板文件进行操作。这些默认模板未必能够完全配合用户的主题,因此用户的最佳选择是指定一个自己的模板文件。可以用来划分(划分内容存储在主题文件中)的常用文件包括:
header.php
sidebar.php
footer.php
comments.php
comments-popup.php
通过这些模板文件模块,用户可以在Index.php主文件中添加各种模板标签,从而调用这种模块化的单元组件,让各个组件显示在最终生成的页面上。
用模板标签get_header() 调用页眉
用模板标签get_sidebar()php网站快速开发调用侧边栏
用模板标签get_footer()调用页脚
下面是这种调用的示例:
在模板中有更多关于不同模板的运行方式以及信息生成方式的相关信息。
基于查询的模板
WordPress可以为不同的查询类型加载不同模板。有两种方法可以实现这一效果:一种是使用内置模板层级,另一种是在模板文件的主循环中使用条件标签。
用户使用模板层级时需要给出专用模板文件。这些专用模板文件会自动改写Index.php文件。例如,如果用户的主题中有一个名为 category.php的模板以及一个需要查询的类别,系统会加载category.php文件而不是index.php文件。 category.php文件不存在时按常规使用index.php文件。
使用category-6.php等类似名称的文件能够在模板层级中获得更为详细的信息。如果要生成一个类别编号为6的页面,系统调用category-6.php文件,而不再使用category.php文件。(在WordPress 2.3与更低版本中,网站管理员可以在管理面板的链接菜单中查各类别ID,自 2.5版本起,WordPress从控制板中删除了ID一栏,用户可以点击“Edit Category(编辑类别)”,根据URL地址栏中cat_ID的值来判断类别ID。URL地址栏的显示内容可能类似于 '...categories.php?action=edit&cat_ID=3' ,其中的“3”就是类别ID。)关于类别模板的更多信息参见设置分类页面。
如果用户主题对使用模板文件的控制需求超过了对模板层级内容的控制需求,用户可以使用条件标签。条件标签检查WordPress主循环并判断某个指定条件是否为真,然后用户可以根据该条件加载相应模板,或在网页上显示相应信息。
例如要在某篇日志中(日志隶属于某个指定类别)生成一个独特的样式表单,代码可能是这样的:
if (is_category(9)) {
// looking for category 9 posts
include(TEMPLATEPATH . '/single2.php');
} else {
// put this on every other category post
include(TEMPLATEPATH . '/single1.php');
}
?>
如果使用查询,代码则是这样的:
$post = $wp_query->post;
if ( in_category('9') ) {
include(TEMPLATEPATH . '/single2.php');
} else {
include(TEMPLATEPATH . '/single1.php');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论