黄聪:wordpress源码解析-目录结构-文件调用关系(转)
Wordpress是一個(gè)單入口的文件,所有的前端處理都必須經(jīng)過index.php,這是通過修改web服務(wù)器的rewrite規(guī)則來實(shí)現(xiàn)的。這種做法的好處是顯而易見的,這樣URL更好看,不必為每一個(gè)url新建一個(gè)文件。
我們看看wp大致的文件調(diào)用是什么樣子的。
wordpress可以分為3個(gè)階段,一是初始化階段,即初始化常量、環(huán)境、加載核心文件等等;二是內(nèi)容處理階段,即根據(jù)用戶的請(qǐng)求調(diào)用相關(guān)函數(shù)獲取和處理數(shù)據(jù),為前端展示準(zhǔn)備數(shù)據(jù);三是主題應(yīng)用階段,在這個(gè)階段,需要展示的數(shù)據(jù)已經(jīng)準(zhǔn)備完畢,需要根據(jù)用戶的請(qǐng)求加載相應(yīng)的主題模板,即對(duì)主題進(jìn)行路由。經(jīng)過這三各階段,用戶請(qǐng)求的頁面就可以完全的展現(xiàn)出來了。從上圖可以看到wp的初始化階段相當(dāng)?shù)姆爆崱?/p>
Index.php文件實(shí)際上沒啥內(nèi)容. 定義了常量WP_USE_THEMES和加載了文件wp-blog-header.php
<?php /*index.php*/ //該常量定義為false時(shí),不使用主題,站點(diǎn)會(huì)顯示為空白,為true時(shí),則正常顯示。 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變量,相當(dāng)于一個(gè)flag,確保每次刷新時(shí),wp-blog-header.php文件只執(zhí)行一次。 if ( !isset($wp_did_header) ) { $wp_did_header = true;//置為true,確保只執(zhí)行一次。 //初始化階段。加載wp-load.php, require_once( dirname(__FILE__) . '/wp-load.php' ); //內(nèi)容處理階段 wp()位于functon.php中 wp(); //主題應(yīng)用階段。ABSPATH wordpress目錄的絕對(duì)路徑 require_once( ABSPATH . WPINC . '/template-loader.php' ); }wp-blog-header任然很簡單,但是可以看到wp的三個(gè)明顯的階段,初始化階段、內(nèi)容處理階段、主題應(yīng)用階段。
wp-load.php的功能很簡單,就是加載wp-config.php. wp-config.php是需要用戶自己進(jìn)行設(shè)置的。設(shè)置DB設(shè)置,密鑰,路徑,語言等
來看看wp-config.php是什么樣子的。
<?php /*wp-config.php */ // ** MySQL 設(shè)置 - 具體信息來自您正在使用的主機(jī) ** // /** WordPress 數(shù)據(jù)庫的名稱 */ define('DB_NAME', SAE_MYSQL_DB); /** MySQL 數(shù)據(jù)庫用戶名 */ define('DB_USER', SAE_MYSQL_USER); /** MySQL 數(shù)據(jù)庫密碼 */ define('DB_PASSWORD', SAE_MYSQL_PASS); /** MySQL 主機(jī) */ define('DB_HOST', SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT); /** 創(chuàng)建數(shù)據(jù)表時(shí)默認(rèn)的文字編碼 */ define('DB_CHARSET', 'utf8'); /** 數(shù)據(jù)庫整理類型。如不確定請(qǐng)勿更改 */ 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']; /**#@+ * 身份密匙設(shè)定。 * * 您可以隨意寫一些字符 * 或者直接訪問 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私鑰生成服務(wù)}, * 任何修改都會(huì)導(dǎo)致 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 數(shù)據(jù)表前綴。 * * 如果您有在同一數(shù)據(jù)庫內(nèi)安裝多個(gè) WordPress 的需求,請(qǐng)為每個(gè) WordPress 設(shè)置不同的數(shù)據(jù)表前綴。 * 前綴名只能為數(shù)字、字母加下劃線。 */ $table_prefix = 'wp_'; /** * WordPress 語言設(shè)置,默認(rèn)為英語。 * * 本項(xiàng)設(shè)定能夠讓 WordPress 顯示您需要的語言。 * wp-content/languages 內(nèi)應(yīng)放置同名的 .mo 語言文件。 * 要使用 WordPress 簡體中文界面,只需填入 zh_CN。 */ define ('WPLANG', 'zh_CN'); /** * 開發(fā)者專用:WordPress 調(diào)試模式。 * * 將這個(gè)值改為“true”,WordPress 將顯示所有開發(fā)過程中的提示。 * 強(qiáng)烈建議插件開發(fā)者在開發(fā)環(huán)境中啟用本功能。 */ define('WP_DEBUG', false); /* 好了!請(qǐng)不要再繼續(xù)編輯。請(qǐng)保存該文件。 */ /** WordPress 目錄的絕對(duì)路徑。 */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** 設(shè)置 WordPress 變量和包含文件。 這個(gè)文件內(nèi)容很多啊,分析較困難*/ require_once(ABSPATH . 'wp-settings.php');?
原文:http://blog.csdn.net/liujiyong7/article/details/8037843
總結(jié)
以上是生活随笔為你收集整理的黄聪:wordpress源码解析-目录结构-文件调用关系(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 实现ADSL自动断网和拨号(适用于
- 下一篇: PMBOK项目管理思维导图梳理