wordpress对请求的处理 简单架构

 Wordpress code flow 介绍了WordPress对请求的处理流程,虽然针对的是wp 1.5版本,相当老了(当前已到3.0.1),但对比最新代码,会发现思路大同小异,细节微有区别而已.

 

整理了最新版本(3.0.1)的处理方式,供参考:

 

 

从index.php开始,每个请求都会流经此处,而它也相当简洁,只是一行代码而已:

 

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

  

 

引用了header.php.这个文件也相当简洁,关键的就三行代码:

 

 

	require_once( dirname(__FILE__) . '/wp-load.php' );

	wp();

	require_once( ABSPATH . WPINC . '/template-loader.php' );

 

 

 

引用了两个文件,中间调用了一个函数,可能会些许惊讶,但确实这就是请求处理的全部鸟.

 

 

 

对wp-load.php的作用可以顾名思义:加载文件.具体是载入config.php(如果有的话),主要是数据库方面的配置.(To be Edit 还有对wp-setting.php 的引入)

 

wp()的调用相当重要,它负责了对请求参数的处理,例如这样一个地址:

 

http://localhost/wordpress/?p=1

 

 

它会解析出来请求的参数p=1

 

而具体的意义,由最后require进来的template-loader.php负责解释,它使用了一连串的if-else判断到底这个请求是哪一类型的,是请求主页,还是根据类别返回文章?  具体的,针对上一个地址http://localhost/wordpress/?p=1,会解释成对单篇文章的请求:is_single(),并返回

 

$template = [根目录地址]/wp-content/themes/chocotheme/single.php

 

 

这是当前选用的模板对单片文章的输出模板,这个文件名不是template-loader么,于是调用

 

include( $template );

 

 

load 这个template , 输出内容,请求解析完毕 ^_^

 

 

整个过程还是相当清晰明快的,当然了这样的叙述相当的High Level了,忽略了很多细节,如 加载不同主题,貌似蛮有名气的The Big Loop等等,就需要细细品位了.

 

整个过程比较有启发的就是对query params 的处理,先拿进来,再判断究竟该分到哪个模板,之后分发出去,有点分发器的意思,清晰明了.

 

 

你可能感兴趣的:(PHP,wordpress,Blog)