$wp对象main()方法源码分析:
该方法源码如下:
1
2
3
4
5
6
7
8
9
|
function main($query_args = ”) {
$this->init();
$this->parse_request($query_args);
$this->send_headers();
$this->query_posts();
$this->handle_404();
$this->register_globals();
do_action_ref_array(‘wp’, array(&$this));
}
|
该方法主要用于执行该类定义的一些方法,以下我们以每行代码为一个步骤进行分析:
- 执行init()方法,该方法用于设置当前用户,它调用wp_get_current_user()函数,即设置全局变量$current_user;
- 执行parse_request()方法,该方法对查询进行解析,具体内容为:使用parse_str()函数将查询解析到数组中,加载rewrite解析URL,基于请求设置查询变量,同时也执行了一系列过滤器和动作用于进一步操作结果;
- 执行send_headers()方法,该方法用于发送附加的HTTP头信息;
- 执行query_posts()方法,该方法用于查询操作,具体内容为:基于查询设置循环LOOP,调用该类中build_query_string()方法设置变量属性,执行$wp_the_query对象中query()方法,其中传入参数为$this->query_vars,即将用户的请求URL解析到变量后传入WP_Query类中query()方法继而调用该类中get_posts()方法获取相应请求对应的数据内容;
- 执行handle_404()方法,该方法用于处理404错误,如果程序根据查询URL并未查询到数据则返回404;
- 执行register_globals()函数,该方法用于注册全局变量;
- 调用do_action_ref_array()函数(在wp-includes/plugin.php文件中),设置本对象作为wp钩子上的函数的参数;