Wordpress *** 作数据库查询使用一个全局变量$wpdb来执行各种 *** 作。应用时,先在函数中声明全局$wpdb,然后启用其数据库 *** 作模式。那么它在哪里被重置并声明为全局变量呢?
从wordpressprocessindex.php开始:
复制下面的代码:
define('WP_use_themes',true);
/**加载WordPress环境和模板*/
require(dirname(__FILE__)。/WP-blog-header.PHP');
Index.php把wp-blog-header.php的文件装了进去,然后打开来看一看:
复制下面的代码:
if(!isset($WP_did_header)){
$WP_did_header=true;
require_once(dirname(__FILE__)。/WP-load.PHP’);
WP();
require_once(ABSPATH。WPINC。/template-loader.PHP');
}
再次打开wp-load.php:
复制下面的代码:
if(file_exists(abspath。WP-config.PHP'){
/**配置文件残留在ABSpath*/
require_once(ABSpath
}elseif(file_exists(dirname(ABSpath))。/WP-config.PHP')&;&!file_exists(目录名(ABSPATH)。/WP-settings.PHP'){
/**配置文件驻留在ABSPATH的上一级,但不是另一个install*/
require_once(dirname(ABSPATH)的一部分。/WP-config.PHP’);
}else{
……
}
它加载环境变量config.php,并打开config.php看一看:
复制下面的代码:
/*OK!请不要再写了。请保存此文档。申请愉快!*/
/**WordPress文件目录的相对路径。*/
if(!defined('ABSPATH')
define('ABSPATH',dirname(__FILE__)。'/');
/**设置WordPress参数并包含文档。*/
require_once(ABSPATH。WP-settings.PHP’);
寻找底部的两行,它们被加载到wp-settings.php文件中。打开来看一看:
复制下面的代码:
define('WPInc','WP-includes');
//包含初始化所需的文件。
要求(ABSPATH。WPINC。/load.PHP’);
要求(ABSPATH。WPINC。/default-constants.PHP');
要求(ABSPATH。WPINC。/version.PHP’);
它加载了load.php文档,并打开了load.php文档,其中有一个涵洞:
复制下面的代码:
functionrequire_WP_db(){
global$wpdb;
require_once(ABSPATH。WPINC。/WP-db.PHP’);
if(file_exists(WP_CONTENT_DIR。/db.PHP')
require_once(WP_CONTENT_DIR。/db.PHP’);
if(isset($wpdb))
return;
$wpdb=newwpdb(DB_USER,DB_PASSWORD,DB_NAME,DB_HOST);
}
并且在这个文件(wp-settings.php)下启用了require_wp_db()方法:
复制以下代码:
//包括wpdb类和db.php数据库插件(如果存在的话)。
require_WP_db();
因此,在逐层加载文档并启用后,$wpdb的全局定义就是在这里进行的。
在这篇文章中,我将谈谈博客原创。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)