WordPress源码设想解读 学步园

WordPress是一个比较流行的博客CMS,并且不依赖于第三方框架。最近我阅读了它的源码,大体了解了它的整体设计实现,下面我做一些总结。我选取的是2.0版本,虽然比较旧,但总体代码量会少一些,也不会影响对整体流程的了解。

WordPress是一个CMS,区别于博客的是它带有博客管理功能,方便使用者发布和管理他的博客文章。它整个是基于PHP语言的,当用户通过浏览器访问WordPress时,Web后台的处理流程如下:

1)apache服务器接收到进来的http请求,执行用户所要访问的目录和文件,当发现是用户访问的是php文件时,调用apache的php模块来执行这个文件。

2)php文件被执行,解析用户http请求参数,访问本地mysql数据库,按照业务逻辑进行处理,最后组装web页面。

3)php模块把生成的web页面返回给apache服务器,apache服务器再通过http响应返回给浏览器。

mysql数据库是内容,php处理代码是逻辑,生成的包含html/css/js的web页面是外观。

整个博客系统主要是提供文章的攥写、检索、显示和管理等功能,这些都是围绕着数据库进行的,数据库包含的是整个网站内容的基础,基于这个基础之上才会有各式各样的业务逻辑。WordPress属于标准的LAMP架构,使用的数据库是mysql,先来看一下它所维护的数据库表:

下面按照代码,走读一下请求的处理流程。index.php是博客首页,它只引入文件wp-blog-header.php,wp-blog-header.php文件包含三个主要的处理步骤:

在第1)步里,wp-config.php会引入wp-settings.php,wp-settings.php里会引入一系列的辅助功能模块,并相应的初始化,为后续的处理做好准备,比如:

在第3)步里,会根据前一步的处理结果来分别进行判断,判断需要返回的是哪种页面,比如文章、网页、分类还是归档等,然后调用相应主题的页面模板,生成响应页面。

另外,配置管理页面的处理流程大体都是先通过引入文件wp-config.php包含各种辅助功能模块,然后调用辅助功能函数从mysql数据库获取数据,生成显示页面,或者获取页面表单输入,再调用辅助功能函数把数据写入mysql数据库。

1、主题(themes)提供了一种页面显示的定制机制,是指WordPress对于主要的显示页面,可以让二次

2、插件(plugins)提供了针对二次开发者的博客功能可扩充机制,是WordPress在处理流程的各个节点,定义了大量的标签,可以让二次开发者通过add_action调用的方式,对某些标签添加处理函数,从而在这些标签执行时会执行二次开发者嵌入的处理函数,完成插件功能。另外也可以通过调用add_submenu_page添加菜单项,在添加的菜单项被点击时触发相应的插件处理函数。

3、过滤器(filter)提供了针对特定标签的字符串过滤修改机制,通过add_filter添加指定标签的过滤规则,在需要使用的地方通过apply_filters来应用指定为标签注册的过滤函数,完成字符串的过滤修改。

4、WordPress使用了大量的全局变量,很多函数都有定义,因为php是单线程的,所以全局变量之间不用考虑互斥处理。

5、tinymce是WordPress使用的一个开源web在线编辑器,具有所见即所得的特点。它没有使用常用的execCommand来完成格式修改,而是采用获取选中的html、修改样式、替换掉选择的html的步骤方式来实现的。

6、WordPrees没有依赖apache自带的重写功能,而是自己实现了一套重写机制,对请求的网页参数按照配置的格式进行重写,主要在类WP_Rewrite进行处理。

未经允许不得转载:主机宝贝 » WordPress源码设想解读 学步园

评论 抢沙发

评论前必须登录!