编程问答
黄聪:wordpress源码解析-凯发ag旗舰厅登录网址下载
wordpress是一个单入口的文件,所有的前端处理都必须经过index.php,这是通过修改web服务器的rewrite规则来实现的。这种做法的好处是显而易见的,这样url更好看,不必为每一个url新建一个文件。
我们看看wp大致的文件调用是什么样子的。
wordpress可以分为3个阶段,一是初始化阶段,即初始化常量、环境、加载核心文件等等;二是内容处理阶段,即根据用户的请求调用相关函数获取和处理数据,为前端展示准备数据;三是主题应用阶段,在这个阶段,需要展示的数据已经准备完毕,需要根据用户的请求加载相应的主题模板,即对主题进行路由。经过这三各阶段,用户请求的页面就可以完全的展现出来了。从上图可以看到wp的初始化阶段相当的繁琐。
index.php文件实际上没啥内容. 定义了常量wp_use_themes和加载了文件wp-blog-header.php
php /*index.php*/ //该常量定义为false时,不使用主题,站点会显示为空白,为true时,则正常显示。 define('wp_use_themes', true); //加载wp-blog-header.php require('./wp-blog-header.php'); ?>wp--blog-header里面是什么样子呢?
php /*wp-blog-header.php */ //wp_did_header变量,相当于一个flag,确保每次刷新时,wp-blog-header.php文件只执行一次。 if ( !isset($wp_did_header) ) { $wp_did_header = true;//置为true,确保只执行一次。 //初始化阶段。加载wp-load.php, require_once( dirname(__file__) . '/wp-load.php' ); //内容处理阶段 wp()位于functon.php中 wp(); //主题应用阶段。abspath wordpress目录的绝对路径 require_once( abspath . wpinc . '/template-loader.php' ); }wp-blog-header任然很简单,但是可以看到wp的三个明显的阶段,初始化阶段、内容处理阶段、主题应用阶段。
wp-load.php的功能很简单,就是加载wp-config.php. wp-config.php是需要用户自己进行设置的。设置db设置,密钥,路径,语言等
wp-config.php
文件。我们需要这个文件来让一切开始,可以查看。 那么现在您可以通过这个 web 界面创建一个 wp-config.php
文件,但并非所有主机都支持,安全的做法是手动创建。'/*/wp_i18n_no_config*/, $path), /*wp_i18n_error_title*/'wordpress › 错误'/*/wp_i18n_error_title*/, array('text_direction' => $text_direction)); } ?>
来看看wp-config.php是什么样子的。
php /*wp-config.php */ // ** mysql 设置 - 具体信息来自您正在使用的主机 ** // /** wordpress 数据库的名称 */ define('db_name', sae_mysql_db); /** mysql 数据库用户名 */ define('db_user', sae_mysql_user); /** mysql 数据库密码 */ define('db_password', sae_mysql_pass); /** mysql 主机 */ define('db_host', sae_mysql_host_m.':'.sae_mysql_port); /** 创建数据表时默认的文字编码 */ define('db_charset', 'utf8'); /** 数据库整理类型。如不确定请勿更改 */ define('db_collate', ''); define('wp_use_multiple_db', true); $db_list = array( 'write'=> array( array( 'db_host' => sae_mysql_host_m.':'.sae_mysql_port, 'db_user'=> sae_mysql_user, 'db_password'=> sae_mysql_pass, 'db_name'=> sae_mysql_db, 'db_charset'=> 'utf8' ) ), 'read'=> array( array( 'db_host' => sae_mysql_host_s.':'.sae_mysql_port, 'db_user'=> sae_mysql_user, 'db_password'=> sae_mysql_pass, 'db_name'=> sae_mysql_db, 'db_charset'=> 'utf8' ) ), ); $global_db_list = $db_list['write']; /**#@ * 身份密匙设定。 * * 您可以随意写一些字符 * 或者直接访问 {@link https://api.wordpress.org/secret-key/1.1/salt/ wordpress.org 私钥生成服务}, * 任何修改都会导致 cookie 失效,所有用户必须重新登录。 * * @since 2.6.0 */ define('auth_key', hash_hmac('sha1', sae_accesskey . 'auth_key', sae_secretkey )); define('secure_auth_key', hash_hmac('sha1', sae_accesskey . 'secure_auth_key', sae_secretkey )); define('logged_in_key', hash_hmac('sha1', sae_accesskey . 'logged_in_key', sae_secretkey )); define('nonce_key', hash_hmac('sha1', sae_accesskey . 'nonce_key', sae_secretkey )); define('auth_salt', hash_hmac('sha1', sae_accesskey . 'auth_salt', sae_secretkey )); define('secure_auth_salt', hash_hmac('sha1', sae_accesskey . 'secure_auth_salt', sae_secretkey )); define('logged_in_salt', hash_hmac('sha1', sae_accesskey . 'logged_in_salt', sae_secretkey )); define('nonce_salt', hash_hmac('sha1', sae_accesskey . 'nonce_salt', sae_secretkey )); /**#@-*/ /** * wordpress 数据表前缀。 * * 如果您有在同一数据库内安装多个 wordpress 的需求,请为每个 wordpress 设置不同的数据表前缀。 * 前缀名只能为数字、字母加下划线。 */ $table_prefix = 'wp_'; /** * wordpress 语言设置,默认为英语。 * * 本项设定能够让 wordpress 显示您需要的语言。 * wp-content/languages 内应放置同名的 .mo 语言文件。 * 要使用 wordpress 简体中文界面,只需填入 zh_cn。 */ define ('wplang', 'zh_cn'); /** * 开发者专用:wordpress 调试模式。 * * 将这个值改为“true”,wordpress 将显示所有开发过程中的提示。 * 强烈建议插件开发者在开发环境中启用本功能。 */ define('wp_debug', false); /* 好了!请不要再继续编辑。请保存该文件。 */ /** wordpress 目录的绝对路径。 */ if ( !defined('abspath') ) define('abspath', dirname(__file__) . '/'); /** 设置 wordpress 变量和包含文件。 这个文件内容很多啊,分析较困难*/ require_once(abspath . 'wp-settings.php');
原文:http://blog.csdn.net/liujiyong7/article/details/8037843
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的黄聪:wordpress源码解析-目录结构-文件调用关系(转)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇: c# 实现adsl自动断网和拨号(适用于
- 下一篇: .net程序员安卓学习之路5:使用xut