Wordpress源码分析 三阶段详解(2)
2014-01-11 11:00
357 查看
本文的侧重点是:展示和解读WordPress从启动(即从index.php入口进入)到在网页上展示模板和内容的过程。这个过程可以分为3个阶段,一是初始化阶段,即初始化常量、环境、加载核心文件等等;二是内容处理阶段,即根据用户的请求调用相关函数获取和处理数据,为前端展示准备数据;三是主题应用阶段,在这个阶段,需要展示的数据已经准备完毕,需要根据用户的请求加载相应的主题模板,即对主题进行路由。经过这三各阶段,用户请求的页面就可以完全的展现出来了~_~
注:为了是思路更加的清晰易懂,暂时不考虑后台管理相关的文件,以及多博客/站点相关的文件!
初始化阶段
从 WordPress入口(大部分情况下是index.php)进入,到这部分结束为止,我们看到WordPress主要做了如下几件事情:定义常量和全局 变量;设置环境参数;进行初始化判断(例如WordPress是否已经安装);加载WordPress核心文件;处理action和filter相关事 务;创建功能对象(如$wp,$wp_rewrite等);因而这一阶段可以看作是WordPress的初始化阶段。WordPress的初始化阶段是一 个相当繁琐的过程,详细见如下列表:
1.定义 WP_USE_THEMES 常量,当该常量定义为 false 时,即不使用主题,站点会显示为空白;为 true 时则正常显示。
内容处理阶段
在这一阶段,调用wp()函数对数据库内容进行查询,并将查询的内容赋值给一些全局变量,方便在模板中使用模板标签获取相应的数据并展示在前端。
1.调用 wp() 函数。
主题应用阶段
WordPress主题的路由和加载主要在 WPINC/template-loader.php 文件中进行,该文件相当于是一个模板加载的路由器,根据 url 加载相应的模板。
1.如果 WP_USE_THEMES 常量为真,则触发挂载点 do_action(‘template_redirect’);
模板路由完成以后,被调用的模板会被加载,模板中的模板标签也会访问在内容准备阶段所设置的全局变量,获取所需的数据,并且将这些数据输出到模板中,最终完成样式+内容在前端的显示!
注:为了是思路更加的清晰易懂,暂时不考虑后台管理相关的文件,以及多博客/站点相关的文件!
初始化阶段
从 WordPress入口(大部分情况下是index.php)进入,到这部分结束为止,我们看到WordPress主要做了如下几件事情:定义常量和全局 变量;设置环境参数;进行初始化判断(例如WordPress是否已经安装);加载WordPress核心文件;处理action和filter相关事 务;创建功能对象(如$wp,$wp_rewrite等);因而这一阶段可以看作是WordPress的初始化阶段。WordPress的初始化阶段是一 个相当繁琐的过程,详细见如下列表:
1.定义 WP_USE_THEMES 常量,当该常量定义为 false 时,即不使用主题,站点会显示为空白;为 true 时则正常显示。
内容处理阶段
在这一阶段,调用wp()函数对数据库内容进行查询,并将查询的内容赋值给一些全局变量,方便在模板中使用模板标签获取相应的数据并展示在前端。
1.调用 wp() 函数。
主题应用阶段
WordPress主题的路由和加载主要在 WPINC/template-loader.php 文件中进行,该文件相当于是一个模板加载的路由器,根据 url 加载相应的模板。
1.如果 WP_USE_THEMES 常量为真,则触发挂载点 do_action(‘template_redirect’);
模板路由完成以后,被调用的模板会被加载,模板中的模板标签也会访问在内容准备阶段所设置的全局变量,获取所需的数据,并且将这些数据输出到模板中,最终完成样式+内容在前端的显示!
相关文章推荐
- U-boot在开发板上移植过程详解(2)---U-boot实现源码分析(第一阶段)
- U-boot在开发板上移植过程详解(3)---U-boot实现源码分析(第二阶段)
- java 中modCount 详解及源码分析
- 详解springMVC容器加载源码分析
- Zookeeper源码分析(四)-zoo.cfg的详解和选举的概念
- uboot_1.1.6源码分析——第一阶段
- Android触摸屏事件派发机制详解与源码分析三(Activity篇)
- Java集合:LinkedList使用详解及源码分析
- Android触摸屏事件派发机制详解与源码分析一(View篇)
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- JDK源码分析之Set类详解
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- 源码分析RocketMQ消息过滤机制下篇-FilterServer、ClassFilter模式详解
- u-boot源码分析第一阶段之Start.S
- Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析
- java 源码分析Arrays.asList方法详解
- JVM源码分析之System.currentTimeMillis及nanoTime原理详解
- netty源码分析之-ByteBuf详解(8)
- 微软校招笔试题#1092 : Have Lunch Together详解以及源码分析
- 图解U-Boot:第二阶段源码分析