让我们展开这一页——从代码的角度逐步分析WordPress是如何将你的网站展示给大家的(第一回:从index.php开始)
  包拯 发表于 2012-03-01 19:13  分类:技术资料  2,742 次阅读  0条评论

 

在展开我们的冒险之旅之前,让我们准备一些装备吧。在我们的装备清单里应该有如下必备品:

1、从WordPress官方网站上下载并解压出一份WordPress3.2.1的源代码。之所以选3.2.1而不是最新的其他版本,是因为这个版本比较稳定,而且这个版本的用户数量比较多,下载的地址为:

http://cn.wordpress.org/wordpress-3.2.1-zh_CN.zip

2 一个可以查看代码的编辑器。ZendStudioEclipseDreamweaverUltraEditEditplusViEmacs或者Windows自带的写字本或者记事本都可以。

好了,上面的就是我们所需要的最基本的工具。

当然,作为一名更合格的冒险者,我建议大家在自己的电脑上将WordPress搭建起来。如果你是Windows用户,那么自己配置一个PHP程序的运行环境,或者直接下载一个WampSever安装PHP程序的运行环境,将WordPress网站在本地电脑上搭建起来。这样大家可以随时看到实际效果,从而避免了我一个人在忽悠。

做好上面的准备,我就可以带着大家去剖析WordPress的代码,看看WordPress架构的网站页面是如何被打开的;在这个过程中,WordPress都对那些干枯的数字和文字做了什么,以至于出现各种各样的页面。

我将尽力带着大家一起展开这一页,并在这个过程中,将我所知道的知识尽可能的转达给大家,希望对大家有所帮助。

有一点需要说明的是,我只不过是一个普普通通、平平凡凡、明明白白、落落大方、亭亭玉立、忠厚善良、尚未娶亲的毛头小子而已^_^,在整个过程中难免出现这样那样的错误(否则让那些大牛们情何以堪?),希望大家能够全心全力、竭尽全力、殚精竭虑、义正词严的对我进行打压、批评和指正。

废话不多说(大哥,已经废话了很多了),现在开始。

每一个网站都有自己的主页,我们的旅行就是从主页开始的。对于用WordPress构建的网站,这个主页在哪里?主页就是我们下载解压后的源代码第一层目录下的index.php

让我们打开这个文件,短短的18行,真正的代码有两行,是不是搞错了?难道这个文件真的就是我们看到的绚丽多姿的主页?

没有搞错,你的网站向大家展示的主页自然不是这2行干巴巴的代码,但它确实是从这两行代码展开来的,神奇吧?

让我们记录下来这两行代码吧:

define('WP_USE_THEMES', true);

require('./wp-blog-header.php');

先说第一行,用define()函数定义了一个全局的常量。有时我们不想改变某个变量的值,就可以用这个define()函数进行定义,相当于C++里的const变量修饰符。

define()函数的定义是:

function define(

string $constant_name,

mixed $value,

boolean[optional] $case_sensitive);

define()函数的作用就是定义一个名称为$constant_name的全局常量,这个常量的值为$value,最后一个参数表示这个常量的名称是否不区分大小写,默认是false,也就是区分大小写。

看了对define()函数的解释,我们就明白这句代码的意思是定义了一个名为WP_USE_THEMES的常量,这个常量的值为true,这个常量在后面将会被用到,到时我们会讲解。

我把require()函数和include()函数放在一起跟大家说明,尽管我们的代码中迄今为止还没有出现include()这个函数。

实际上require()函数和include()函数的作用基本上相同,他们的作用就是引用参数所表示的文件。也就是相当于在使用require()或者include()函数的地方,插入了require()或者include()函数参数表示的文件,例如index.php中这句代码的意思就是插入文件./wp-blog-header.php其中./表示跟你的index.php同一目录下,如果是上一级目录就是../

有编程经验的人都知道,如果将所有的代码都写在了同一个页面内,那将是多么恐怖的一件事儿——几万,几十万行代码堆叠在一起。所以我们会把代码根据类或者函数等进行拆分,用的时候直接引用这个文件就可以了,就相当于我们在引用文件的地方调用了这个文件里的代码。

Includerequire这两个函数的参数是用来表示文件路径的字符串。通常我们要用文件的相对路径,而不是绝对路径;例如上面的./wp-blog-header.php就表示当前目录下的wp-blog-header.php文件。而不是写成E:/Web/wp-prj/wp-blog-header.php,因为如果是后者,当你改变文件夹的时候,程序再去根据你的绝对路径找这个文件,肯定会找不到的。所以include或者require的时候一般用相对路径

上面我们说过includerequire这两个函数基本上相同,基本上相同的另一个意思就是他们有不同之处。

includerequire的不同之处就在于,如果去使用require引用的文件出现错误的时候,程序会报错,并停止运行;而如果用的是include,则程序会报警,说你这个文件执行的时候有错误,但是还是会硬着头皮继续运行下去,当然运行的结果是什么样子,就不得而知了。

因此这俩函数的选择,要看你对你的程序出错后的容忍程度,如果你希望你的程序调用某个文件后,出错了还继续运行,那么就用include,反之则用require

实际上,这才是我们真正的入口——wp-blog-header.php,因为index.php的一个require,把我们一下子传送到了wp-blog-header.php这个页面。

这次就先到这里吧,讲的有点啰唆,但是这不正是我开始说的那样么?“带着略微知道一点PHPHTML的人,从代码的角度逐步分析WordPress是如何将你的网站展示给大家的”。

本文固定链接: http://www.youduoshao.com/2012-03-01/201203011917.html

填写您的称呼和邮箱即可发布评论

快捷键:Ctrl+Enter