黄聪: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错误。

时间: 2024-10-13 17:43:53

黄聪:wordpress工作原理的相关文章

黄聪:WordPress 多站点建站教程(六):使用WP_Query、switch_to_blog函数实现获取子站点分类中的文章

首先在你使用主题的funtions.php里面添加下代码: //根据时间显示最新的分类文章内容,每个站点显示一篇内容 //$blog_id 子站点ID //$catid 分类ID wp_reset_query(); switch_to_blog($blog_id); global $post;?> $my_query2 = new WP_Query('showposts=1&order=desc&orderby=date&cat='.$catid); while ($my_q

黄聪:如何删除wordpress登录之后wp_footer、wp_head自行加载的Open Sans字体、fonts.googleapis.com连接导致卡死的问题

有时候在浏览自己的WordPress网站时,发现网页长时间无响应, 卡在正在连接到fonts.googleapis.com ,如下图所示: 查看网页源码时,发现Head里面有如下一段代码: <link rel='stylesheet' id='open-sans-css' href='//fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=

黄聪:《跟黄聪学WordPress插件开发》

续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPress插件简介 WordPress插件的创建 认识钩子:动作(add_action与do_action) 认识钩子:带参数的动作 认识钩子:常用的动作实用案例 认识钩子:过滤器(add_filter与apply_filters) 认识钩子:带参数的过滤器 认识钩子:常用的过滤器实用案例 后台整合:创建菜单和子

黄聪:《跟黄聪学WordPress主题开发》

又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库表结构.字段详解 WordPress主题模版加载过程 WordPress主题模版开发:主题模版的安装及创建 WordPress主题模版开发:首页模版及调用options表数据 WordPress主题模版开发:如何循环输出文章列表 WordPress主题模版开发:文章元数据及多语言化 WordPress主题模版

黄聪:wordpress后台加载ajax.googleapis.com导致打开速度很慢的解决方案

打开wordpress后台,发现很卡,通过开发者工具看到是因为加载http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css这个元素导致的. <link rel='stylesheet' id='jquery-ui-smoothness-css' href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoot

黄聪:wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些

原文地址:http://codex.wordpress.org/Plugin_API/Action_Reference muplugins_loaded After must-use plugins are loaded registered_taxonomy For category, post_tag, etc. registered_post_type For post, page, etc. plugins_loaded After active plugins and pluggabl

黄聪:WordPress 多站点建站教程(二):后台(管理网络)设置详解,如何管理子站的用户、主题、插件、设置等功能

建立好了子站,我们需要有个地方配置所有子站的主题.插件等功能,我们可以在后台看到 我的站点--管理网络 如下图: 在 管理网络--仪表盘 里面,我们可以创新用户和站点,也提供了查询功能. 要注意的是:当你新上传的主题或者插件,都需要在管理网络那边的主题和插件里面将你上传的主题和插件开启.这样才可以在你的子站点中查看的到. 黄聪:WordPress 多站点建站教程(二):后台(管理网络)设置详解,如何管理子站的用户.主题.插件.设置等功能

《黄聪:手机移动站SEO优化教程》4、如何实现手机移动网站和PC站点的自主适配

转载:http://blog.csdn.net/dog250/article/details/6896949 UDP协议疑难杂症全景解析 2011-10-22 19:26 2989人阅读 评论(4) 收藏 举报 tcp网络算法交通socket通讯 如今,但凡说精通网络的,第二个意思就是"精通TCP",事实上,很多自称精通TCP的家伙们只是精通socket接口而已,对TCP行为精通的并不多,笔者也不算精通,但绝对是中等以上水平.如果你真的精通TCP行为,那么本文不读也罢,直接发邮件给我,

HTTPS工作原理

目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系 什么是证书和数字签名,它们是如何传递信任的 HTTPS有什么样的功能,它是如何实现这样的功能的 简介 HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3.本文着重描述TLS协议的1.2版本 下图描述了在TCP/I