1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| 整个wp的程序结构比较特别,也不象一些普通的面向过程,也不是MVC,总之就是他自己的程序结构。
在模板前面的程序基本上都是公共处理,但是把post的查询的逻辑处理放在公共处理中。因为整个wp的页面基本上都有查询post。
其它的逻辑操作基本上是在模板中调用的(比如评论),所以它的模板并不是单纯的V,可以算是C+V。
WordPress页面加载流程: 程序入口index.php文件 └加载wp-blog-header.php文件 ├加载wp-load.php文件:初始化,建立WordPress上下文环境 │ └加载wp-config.php文件 │ └加载wp-settings.php文件:加载WordPress相关的API,约62个文件 │ ├加载加载WordPress必须的函数,包含很多与常量初始化相关的函数 │ ├加载与版本相关的全局变量 │ ├初始化默认常量 │ ├检查PHP和MySQL的版本 │ ├禁用magic quotes │ ├设置时区 │ ├关闭register_globals │ ├修正服务器变量 │ ├favicon │ ├检查是否处于维护状态 │ ├计时器开始 │ ├检查是否处于调试状态 │ ├设置缓存相关信息 │ ├设置语言文件所在的路径 │ ├加载文件 │ ├加载数据库操作相关文件 │ ├设置wpdb │ ├设置对象缓存 │ ├加载多站点相关的文件 │ ├注册shutdown_action_hook │ ├如果只使用基本功能,加载到此结束(退出) │ ├检查WordPress如果没有安装,则进入安装流程 │ ├加载更多的文件 │ ├加载多站点相关的文件 │ ├设置与插件相关的常量,加载插件 │ ├do_action('muplugins_loaded'):无默认函数绑定 │ ├设置与cookie相关的常量 │ ├设置与SSL相关的常量 │ ├加载文件 │ ├创建初始分类 │ ├创建post类型 │ ├设置默认主题文件路径 │ ├加载激活的插件 │ ├加载可以被注入的插件函数 │ ├设置编码方式 │ ├载入缓存 │ ├do_action('plugins_loaded'):wp_maybe_load_widgets,wp_maybe_load_embeds │ ├初始化与功能相关的常量 │ ├初始化magic_quotes │ ├do_action('sanitize_comment_cookies'):sanitize_comment_cookies │ ├初始化一些全局常量 │ ├do_action('setup_theme'):无默认函数绑定 │ ├初始化与模板相关的常量 │ ├初始化语言设置 │ ├初始化主题自带的函数 │ ├do_action('after_setup_theme'):无默认函数绑定 │ ├设置当前用户信息 │ ├do_action('init'):check_theme_switched,wp_cron,smilies_init,_show_post_preview │ ├检查站点状态,如果是多站点,需要额外加载文件 │ └do_action('wp_loaded'):无默认函数绑定 ├调用wp()函数:调用WP-main()方法,内容处理 │ ├初始化 │ ├解析参数 │ ├发送HTTP头 │ ├查询Post │ ├处理404的情况 │ └注册全局变量 └加载template-loader.php文件:应用主题并渲染内容 ├处理不使用主题的情况 ├处理HEAD请求 ├处理robot,feed,trackback请求 └选择模板文件
|