WordPress主题文件构成

2012年07月15日21:24:23 3 360

概述

从零开始制作 WordPress 主题其实不难,只要你从现在开始认真阅读这个教程,一步一步认真学习,你就会成为一个 WordPress 主题制作高手。至少你会修改现有主题。

网络上已经有很多关于制作 WordPress 主题的教程,并且 WordPress 官方网站上也有指导文章。但是当你不懂这方面的术语的话,这些教程可能不一定会帮助你,甚至还会误导你,所以这个教程会真正从零开始教你如何创建 WordPress 主题。
工具/原料

WordPress本地运行环境(或者在线网站空间),并且已安装好WordPress,作为测试博客

至少配备三种浏览器,Microsoft Internet Explorer、Mozilla Firefox、Google Chrome,版本暂时不限,用于测试网页是否显示正常

一个文本编辑器用于编写代码,Dreamweaver、UltraEdit、NotePad++、Vim等,不推荐使用记事本

阅读说明

懂一点点的HTML、CSS

自己动手编写过代码 自己会设计网页界面,想了解怎么制作WordPress主题 不打算动手编写代码,不想照着本教程一步一步地操作,只是想看看 没有任何网页设计知识 没用过WordPress 非常熟悉WordPress主题制作过程 不喜欢我在此罗嗦 了解WordPress主题制作的过程 知道如何去修改一个WordPress主题,扩展主题的功能 WordPress本地运行环境(或者在线网站空间),并且已安装好WordPress,作为测试博客 至少配备三种浏览器,Microsoft Internet Explorer、Mozilla Firefox、Google Chrome,版本暂时不限,用于测试网页是否显示正常 一个文本编辑器用于编写代码,Dreamweaver、UltraEdit、NotePad++、Vim等,不推荐使用记事本
步骤

1

主题文件构成
2

主题文件构成

在开始制作WordPress主题之前,首先得了解WordPress主题到底由哪些文件构成,你得清楚WordPress程序是怎样与主题文件连接的。以下是WordPress默认主题default文件夹下的所有模板文件:看了上图,可能你还摸不着头脑,到底这些文件是干什么的。WordPress的主题是用PHP编写的,而不是纯HTML + CSS,所以模板文件的后缀名是.php,如果你想精通WordPress的主题制作,完美控制你的博客,最好要熟悉PHP编程。要是不会PHP编程怎么办?就做不了WordPress主题了吗?那也不是,至少看完本系列教程,你也能够掌握基本的WordPress主题制作方法。下面是WordPress主题文件层次结构,它会告诉你:当WordPress显示特定的页面类型时,会使用哪个模板文件呢?只有了解了以下主题层次结构,你才能知道你的WordPress主题到底需要写哪些文件。
主题文件构成|WordPress主题制作全过程
3

怎么看下面的文件层次结构?
以主页为例,下面有2个文件home.php和index.php,WordPress程序会从你的主题文件夹中依
4

主页:

1.home.php

2.index.php
5

文章页:

1.single-{post_type}.php – 如果文章类型是videos(即视频),WordPress就会去查找single-videos.php(WordPress 3.0及以上版本支持)

2.single.php

3.index.php
6

页面:

1.自定义模板 – 在WordPress后台创建页面的地方,右侧边栏可以选择页面的自定义模板

2.page-{slug}.php – 如果页面的缩略名是news,WordPress将会查找 page-news.php(WordPress 2.9及以上版本支持)

3.page-{id}.php – 如果页面ID是6,WordPress将会查找page-6.php

4.page.php

5.index.php
7

分类:

1.category-{slug}.php – 如果分类的缩略名为news,WordPress将会查找category-news.php(WordPress 2.9及以上版本支持)

2.category-{id}.php -如果分类ID为6,WordPress将会查找category-6.php

3.category.php

4.archive.php

5.index.php
8

标签

1.tag-{slug}.php – 如果标签缩略名为sometag,WordPress将会查找tag-sometag.php

2.tag-{id}.php – 如果标签ID为6,WordPress将会查找tag-6.php(WordPress 2.9及以上版本支持)

3.tag.php

4.archive.php

5.index.php
9

作者:

1.author-{nicename}.php – 如果作者的昵称为rami,WordPress将会查找author-rami.php(WordPress 3.0及以上版本支持)

2.author-{id}.php – 如果作者ID为6,WordPress将会查找author-6.php(WordPress 3.0及以上版本支持)

3.author.php

4.archive.php

5.index.php
10

日期页面:

1.date.php

2.archive.php

3.index.php
11

搜索结果

1.search.php

2.index.php
12

(未找到)页面

1.404.php

2.index.php
13

附件页面

1.MIME_type.php – 可以是任何MIME类型 (image.php, video.php, audio.php, application.php 或者其他).

2.attachment.php

3.single.php

4.index.php
14

HTML静态模板制作

制作WordPress需要了解PHP,但是不管怎样,你的博客页面都是一张网页,网页之所以能够在浏览器中显示出来,是因为最终传送给浏览器的是HTML、CSS和JS等终端代码,最终由这些代码控制浏览器的显示结果。制作WordPress主题也不例外,它们都是网页,网页最基本的是HTML。要想制作WordPress主题,首先得设计主题界面,含蓄、简约、厚重、奔放……,风格完全随你,接着再将你的设计理念转化为.html,并能在浏览器中正常显示出来。

本系列教程不会教你如何去设计博客的界面,也不会教你HTML和CSS基础知识,而是假定你已经有HTML和CSS基础了,如果你不会HTML,也不会CSS,后面的东西恐怕对你来说就像天书了。

本系列教程将使用由tutsplus无偿提供的html模板Aurelius为例,来讲解WordPress主题的制作过程,其他模板的制作也类似。下面提供该HTML模板文件下载,我们将以此来练习如何将HTML静态页面与PHP代码结合,制作WordPress主题。下载后,里面的html文件都是可以直接双击打开的。

可能这个模板并不适合每个人的口味,但这个用于我们的主题制作练习已经足够了。另外你可能会诧异,怎么是英文版的?放心,到了后面你就会知道,是否英文版都没多大关系。下面说说下载到的这些文件的用途:
15

首页:index.html
16

存档页:archive.html
17

页面:page.html
18

文章页:single.html
19

联系页:contact.html
20

无边栏页:full_width.html
21

图片:/images/
22

样式表:style.css
23

缩略图:screenshot.png

大多数博客所能看到的页面类型也基本就这些。你可能已经注意到,不管你用哪个WordPress主题,不同的文章页面除了标题和内容不同以外,其他东西基本都是一样,这就是所谓的模板。
24

小试牛刀

一个WordPress主题至少包含以下两个文件:
25

style.css
26

index.php

好,现在就开始我们的WordPress主题制作。在你的WordPress目录 wp-content\themes\下新建一个文件夹,命名为Aurelius,将WordPress主题制作全过程(三):HTML静态模板制作下载到的style.css和index.html放到该目录下,再将index.html重命名为index.php,这样wp-content\themes\Aurelius目录下就有下面两个文件:

登陆你的WordPress博客管理后台 – 外观,里面是不是多了一个主题”Aurelius”呢?

启用该主题,打开你的博客主页,OH,页面一片混乱?怎么搞的?先继续看下文。你可能会很好奇,这个主题的名称可不以改成我要的名字呢、主题作者能不能改成我的名字呢、为什么主题没有小图片预览,下面就教你怎样更改这些”主题信息”。用文本编辑器打开Aurelius目录下的style.css,你可以按照下面的说明尝试在style.css文件最前面添加以下信息,再到WordPress管理后台”外观”栏目下,刷新一下看看有什么变化:

将WordPress主题制作全过程(三):HTML静态模板制作下载到的screenshot.png放到Aurelius目录下,再到WordPress管理后台”外观”栏目下,看看有什么变化,是不是多了个预览图呢?主题制作完毕后,你可以给你的主题界面截个图,命名为screenshot.png,大小300 * 225,放置到主题目录下作为主题缩略图
27
/*
Theme Name: 这里填主题名称
Theme URI: 这里填主题介绍的网址,没有就填你的博客网址吧
Description: 这里填主题的简短介绍
Version: 版本号
Author: 作者名
Author URI: 作者的网址
Tags: 标签,多个用半角逗号隔开
*/
28

制作header.php
29

你可以尝试用文本编辑器打开从WordPress主题制作全过程(三):HTML静态模板制作下载到的 .html文件,不知道你有没有发现他们头部的代码都非常的相似呢?其实我们可以提取这部分相似的代码,放到一个单独的文件header.php中,各个页面想用这部分代码的时候再用php的include包含进去,省的每个页面里面都要写这部分代码,更改起来也可以达到一改全改的目的。

再次提醒:如果你不打算动手编写代码,这个系列教程就别看了,对你无益!

30

接着我们上次创建的主题目录wp-content\themes\Aurelius,在该目录下新建一个php文件header.php,我们提取出index.php中的头部代码复制粘贴到header.php中,下面是的代码就是目前header.php中的所有代码了(当然不同主题的头部代码都是不一样,在你实际的项目中可以自定决定):
31
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head profile=”http://gmpg.org/xfn/11″>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Aurelius | Blog</title>
<!– Stylesheets –>
<link rel=”stylesheet” href=”./style.css” type=”text/css” media=”screen” />
</head>
<body>
<div id=”wrapper” class=”container_12 clearfix”>
<!– Text Logo –>
<h1 id=”logo” class=”grid_4″>Aurelius</h1>
<!– Navigation Menu –>
<ul id=”navigation” class=”grid_8″>
<li><a href=”contact.html”><span class=”meta”>Get in touch</span><br />
Contact Us</a></li>
<li><a href=”blog.html” class=”current”><span class=”meta”>Latest news</span><br />
Blog</a></li>
<li><a href=”index.html”><span class=”meta”>Homepage</span><br />
Home</a></li>
</ul>
<div class=”hr grid_12 clearfix”>&nbsp;</div>
<!– Caption Line –>
<h2 class=”grid_12 caption clearfix”>Our <span>blog</span>, keeping you up-to-date on our latest news.</h2>
<div class=”hr grid_12 clearfix”>&nbsp;</div>
32

再用文本编辑器打开index.php、archive.php、contact.php、full_width.php、page.php和single.php,删掉以上类似代码,改成:
33
<?php get_header(); ?>
34

好,现在打开你的测试博客主页,看看我们制作的主题是否还可以正常工作,答案是可以的,跟原来几乎没什么两样,但还是一片混乱。get_header()就相当于将header.php中的代码拷贝到当前的php文件。接下来,我们将仔细探讨header.php中的动态内容。header.php将会被所有的模板页面(主页、分类页、页面、标签页等)所包含,所以header.php中代码应该是动态,适合不同页面的,所以这里面需要用到PHP代码,而不是单纯的HTML。
35

下面让我们一起来修改header.php
1、更改<title>

我们都知道不同页面的title都是不一样,而且title的设置还会直接影响到SEO的效果,所以这里应该谨慎设置。下面提供一种SEO优化的title写法,将<title>Aurelius | Blog</title>改成:

以上添加的php代码运用了条件判断,针对不同的页面采用不同title,这里解释一下这几个条件标签。
36
<title><?php if ( is_home() ) {
bloginfo(‘name’); echo ” – “; bloginfo(‘description’);
} elseif ( is_category() ) {
single_cat_title(); echo ” – “; bloginfo(‘name’);
} elseif (is_single() || is_page() ) {
single_post_title();
} elseif (is_search() ) {
echo “搜索结果”; echo ” – “; bloginfo(‘name’);
} elseif (is_404() ) {
echo ‘页面未找到!’;
} else {
wp_title(”,true);
} ?></title>
37

is_home() :当前页面为主页时返回true
38

is_category():当前页面为分类页时返回true
39

is_single():当前页面为单文章页时返回true
40

is_page():当前页面为单页面时返回true
41

更详细的内容参阅WordPress文档:条件标签

到目前为止,可能你对这些条件判断标签还没有深入的认识,也搞不懂到底是用了这些标签会对主题造成怎样的影响的,随着我们教程的进一步深入,你会慢慢理解的。
2、更改样式表style.css路径

在此之前你看到的首页都是混乱的,原因是还没加载css样式。现在我们一起把样式加上。你可以在header.php中找到这一段代码:

聪明的你可能问:wp-content\themes\Aurelius目录下不是已经有一个 style.css吗?那为什么 header.php没有加载css呢?结果你是可以看到的,页面一篇混乱,可以确定确实没有加载到css。因为这是WordPress的主题,是要被WordPress的主程序调用,经过层层解析才能把你的博客显示出来,而不是简简单单的html静态网页文件。正确的改法:

bloginfo('stylesheet_url')输出的是你的主题css文件绝对网址,如http://localhost/wp/wp-content/themes/Aurelius/style.css,WordPress程序会自动识别你的WordPress安装地址,当前启用的主题,自动输出这个style.css链接。现在你可以试着更改一下,然后刷新一下你的博客首页,查看网页源代码,style.css的链接是不是变成你的了?页面是否可以正常显示了呢?

不过,还有几张图片的路径不对,还不能显示出来,现在我们一起用文本编辑器打开index.php、archive.php、contact.php、full_width.php、page.php和single.php,给这些图片加上正确的URL,搜索代码,将所有的:src="images/,批量替换成src="<?php bloginfo('template_url'); ?>/images/。现在再刷新你的主页,看文章的缩略图610×150是否可以正常显示。<?php bloginfo('template_url'); ?>用于输出主题目录的URL。
3、添加pingback

至于什么是pingback,你可以在搜索引擎中输入关键字WordPresspingback,就可以得到你想要的答案了。如果你需要这个功能,可以将在<head>里面添加代码:

在header.php,下面两行代码用于显示博客名称和描述:

上面是静态代码,现在做如下修改:

现在你的博客首页看到的就是你博客名称和描述了,并且logo也是一个链接指向你的博客首页。我们这里说说这些php代码的作用。
42
<link rel=”stylesheet” href=”./style.css” type=”text/css” media=”screen” />
43
<link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen” />
44
<link rel=”pingback” href=”<?php bloginfo(‘pingback_url’); ?>” />4、更改博客名称和描述
45
<h1 id=”logo” class=”grid_4″>Aurelius</h1>
<h2 class=”grid_12 caption clearfix”>Our <span>blog</span>, keeping you up-to-date on our latest news.</h2>
46
<h1 id=”logo”><a href=”<?php echo get_option(‘home’); ?>/”><?php bloginfo(‘name’); ?></a></h1>
<h2><?php bloginfo(‘description’); ?></h2>
47

<?php echo get_option('home'); ?>输出你的博客首页网址
48

<?php bloginfo('name'); ?>输出你的博客名称
49

<?php bloginfo('description'); ?>输出博客描述

博客名称和描述可以在WordPress管理后台 – 设置 – 常规那里更改。以后制作你自己的WordPress主题的时候,你可参照上面的说明对你的主题进行修改。
5、添加订阅feed链接

相信每个已发布的WordPress博客主题都会提供feed订阅,当然我们的主题也应该提供这样的功能。在</head>之前添加以下代码:

有些插件需要在网页头部添加一些js或css,要让这些插件能够正常的工作,也让你的主题有更好的兼容性,你应该添加wp_head()函数。打开header.php,在</head>前面添加以下代码即可:

现在打开你的博客主页,查看源代码,</head>前面是不是多了以下类似代码(这些都是wp_head()的功劳):

关于添加网页描述和关键字,可以查看我之前写过的文章:WordPress使用经验(一)独立的Description 和 Keywords
8、显示菜单栏

目前菜单栏有Home、Blog和Contact Us几个菜单,不过这些都是静态的内容,并不是你博客上的页面。现在我们将菜单栏换成你的菜单,这里只在菜单栏中列出页面page,当然你也可以再放置分类,根据你的喜好来吧,将header.php中:

改成:

具体如何在菜单栏显示分类,你可以看这篇文章,有什么问题再给我留言:WordPress 分类做导航栏,并高亮显示

另外,可以参考这两个函数的说明(英文):
50
<link rel=”alternate” type=”application/rss+xml” title=”RSS 2.0 – 所有文章” href=”<?php echo get_bloginfo(‘rss2_url’); ?>” />
<link rel=”alternate” type=”application/rss+xml” title=”RSS 2.0 – 所有评论” href=”<?php bloginfo(‘comments_rss2_url’); ?>” />6、添加wp_head
51
<?php wp_head(); ?>
52
<link rel=”EditURI” type=”application/rsd+xml” title=”RSD” href=”http://ludou.co.tv/blog/xmlrpc.php?rsd” />
<link rel=”wlwmanifest” type=”application/wlwmanifest+xml” href=”http://ludou.co.tv/blog/wp-includes/wlwmanifest.xml” />
<link rel=’index’ title=’露兜实验室’ href=’http://ludou.co.tv’ />
<meta name=”generator” content=”WordPress 2.9.2″ />7、添加Description 和 Keywords
53
<ul id=”navigation” class=”grid_8″>
<li><a href=”contact.html”><span class=”meta”>Get in touch</span><br />
Contact Us</a></li>
<li><a href=”blog.html” class=”current”><span class=”meta”>Latest news</span><br />
Blog</a></li>
<li><a href=”index.html”><span class=”meta”>Homepage</span><br />
Home</a></li>
</ul>
54
<ul id=”navigation”>
<?php wp_list_pages(‘depth=1&title_li=0&sort_column=menu_order’); ?>
<li <?php if (is_home()) { echo ‘class=”current”‘;} ?>><a title=”<?php bloginfo(‘name’); ?>” href=”<?php echo get_option(‘home’); ?>/”>主页</a></li>
</ul>
55

Template Tags/wp list pages
56

Template Tags/wp list categories
9、刷新缓存

在<body>前面,</head>后面添加PHP代码,用于提高程序运行效率:<?php flush(); ?>
总结

好了,本次练习到此结束!现在总结一些今天讲到的比较重要的知识点:
57

<?php get_header(); ?>从当前主题文件夹中包含header.php文件
58

is_home(),is_single(),is_category()等几个条件判断标签

<?php bloginfo('stylesheet_url'); ?>输出主题文件夹中style.css文件的路径

<?php bloginfo('pingback_url'); ?>输出博客pingback网址

<?php bloginfo('template_url'); ?>输出博客主题目录URL

<?php echo get_option('home'); ?>输出你的博客首页网址

<?php bloginfo('name'); ?>输出你的博客名称

<?php bloginfo('description'); ?>输出博客描述

<?php wp_head(); ?>用于包含WordPress程序输出头部信息

<?php wp_list_categories(); ?>用于列出博客分类页

<?php wp_list_pages(); ?>用于列出博客页面

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

    • 心灵红旗 1

      要好好跟知更鸟老师学习

      • 默者电梯博客 2

        好好学习一下

        • 露兜 1

          这篇文章是自动采集的吗?