wordpress工作原理

简介:

WP初始化的过程:当你输入<yourlink>/wordpress对wordpress进行初始化时,wordpress默认会找
根目录下的index.php页面,看一下index.php页面。

 

<?php
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php'); ---把/wp-blog-header.php包含进来
?>
你会发现,它会去调用根目录下的wp-blog-header.php,我们继续看wp-blog-header.php。

 

复制代码
复制代码
<?php
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );  ---加载wp-load.php
wp();  ---加载function WP();
require_once( ABSPATH . WPINC . '/template-loader.php' );   ---加载模板文件
}
?>
复制代码
复制代码

通过wp-load.php,wordpress先后把wp-config.php, wp-setting.php,classes.php,fucntions.php,
query.php等文件加载进来,并建立了三个全局变量,$wp_the_query,$wp_rewrite和$wp ,分别为WP_Query,

WP_Rewrite和WP类的实例。然后,wp-blog-header执行wp()函数,并通过其调用$wp所属WP类的main方法,

这个方法又调用一系列方法,但最重要的是parse_request方法, WP从这里开始解析URL并建立主循环。
我们看一下wordpress的主方法:

复制代码
复制代码
function main($query_args = '') {
  $this->init();  --初始化环境
  $this->parse_request($query_args);   --解析请求
  $this->send_headers();  --发送头信息
  $this->query_posts();  --查询日志
  $this->handle_404();   --操作404(URL地址不存在)
  $this->register_globals();  --注册全局变量
  do_action_ref_array('wp', array(&$this));
}
复制代码
复制代码

 

 

这基本上就是wordpress初始化时的信息。

下面就讨论一下当我们设置自定义的永久链接时,wordpress的运作过程。
当我们使用了自定义的永久链接的时候,wordpress会自动生成.htaccess文件,并且在这个文件中生成相

对应于永久链接的匹配规则,在wordpress/wp-includes/rewrite.php中有针对.htaccess文件的重写规则,其

中$use_verbose_rules参数规定了输出信息的详尽和简约,默认的情况下为false。输出的信息比较简单,

如下

 

 

复制代码
复制代码
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
复制代码
复制代码

 

如果想查看完整的匹配规则,就把$use_verbose_rules设置为true。


wordpress在对使用了自定义的永久链接进行处理时,它还是会调用wp-include/classes.php文件中的parse_request函数,对发过来的请求进行解析,无论是否为pathinfo类型的请求,都会被赋值给$request参数,然后调用该参数与.htaccess中的规则进行匹配,如果找到一个匹配就会“发送头信息”、“查询日志”,如果没有任何匹配就会返回404错误。




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/4741044.html如需转载请自行联系原作者

相关文章
|
前端开发 数据库 数据安全/隐私保护
|
3月前
|
关系型数据库 MySQL 数据库
如何使用Docker搭建Drupal内容管理系统并远程访问
如何使用Docker搭建Drupal内容管理系统并远程访问
26 0
|
4月前
|
前端开发 PHP
Magento 和 WordPress 的区别
Magento 和 WordPress 的区别
40 1
|
7月前
|
弹性计算 安全 JavaScript
基于函数计算快速搭建Wordpress博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Wordpress博客。
142 0
|
10月前
|
应用服务中间件 nginx
树莓派使用Nginx 搭建轻量级网站远程访问
树莓派使用Nginx 搭建轻量级网站远程访问
155 0
树莓派使用Nginx 搭建轻量级网站远程访问
什么是 WordPress 核心?WordPress 核心解释
什么是 WordPress 核心?WordPress 核心解释 WordPress 核心是指 WordPress 工作所需的所有“基础”文件的一种方式。WordPress 核心是您以 zip 文件的形式从WordPress.org下载的内容。
什么是 WordPress 核心?WordPress 核心解释
|
SQL 关系型数据库 MySQL
部署与安装 WordPress 网站程序|学习笔记
快速学习部署与安装 WordPress 网站程序
265 0
部署与安装 WordPress 网站程序|学习笔记
|
应用服务中间件 nginx 开发者
【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必将迅速成为软件开发者的新宠儿。
1316 0
|
关系型数据库 MySQL 应用服务中间件
如何用阿里云搭建Web服务器
一、什么是服务器、云服务器     服务器:是一种高性能的计算机     云服务器:是一组集群服务器虚拟出类似独立服务器的部分,集群中每个服务器都有云服务器的一个镜像,从而大大提高了云服务器的稳定性。
4881 0