wordpress源碼閱讀


記錄下自己閱讀wordpress的過程。打算先整體過一遍。

我下載的wordpress版本是4.9.5。

首先是入口文件index.php

僅僅只是告訴要使用主題,然后加載wordpress環境和模板。

進入wp-blog-header.php文件看看

使用單例的方式執行if中的內容。主要包括3個部分。

一、加載wp-load.php  //加載wordpress需要的庫

二、wp();   //設置 wordpress 查詢,這里是wordpress的主要執行部分。

三、加載template-loader.php  // 主題模板

wp-load.php 是引導文件,設置絕對路徑常量,加載wp-config.php文件,該文件主要設置數據庫用戶密碼等數據。設置錯誤輸出,等wordpress環境設置。這里還有一個防止嵌套安裝的判斷。

wp-config.php設置了數據庫信息,debug模式,加載wp-settings.php。

wp-settings.php修復常見的變量和包含wordpress的程序和函數庫

主要引入了wp-includes中的

load.php  //wordpress自己的函數類庫

default-constants.php  //定義常量和全局變量

plugin.php //加載插件的一些API

加載version.php  //主要是所需的db,php,wordpress版本支持信息

然后執行wp_initial_constants();顧名思義是要初始化了。設置wordpress的運行時內存。定義很多常量。

wp_check_php_mysql_versions();  //檢查wordpress的mysql版本是否支持

禁用魔術引導,定義時區,關閉register_globals防止用戶字段被注冊成全局變量

wp_fix_server_vars();  //標准化$_SERVER變量

wp_favicon_request();  //檢查請求,如果是請求favicon.ico的不用加載全部wordpress

這里header的作用不是很清楚,mark一下,明天找找相關的答案。

wp_maintenance();  //檢查是否處於維護模式,可以提示更新版本

time_start(); //記錄wordpress開始時間

wp_debug_mode();  //檢查是否處於debug模式

定義不存在的函數

if(!function_exists('_')) {

  function _($string) {

    return $string;

  }

}

if語句的不同寫法

if (XXX) :

XXX;

endif;

主要是檢查是否有因為php版本太早而缺失的函數,來補充實現。

后面是wordpress自己寫的自動類加載函數。

require( ABSPATH . WPINC . '/compat.php' );

wordpress使用list 函數
require( ABSPATH . WPINC . '/class-wp-list-util.php' );

wordpress主要的函數庫API
require( ABSPATH . WPINC . '/functions.php' );


require( ABSPATH . WPINC . '/class-wp-matchesmapregex.php' );
require( ABSPATH . WPINC . '/class-wp.php' );
require( ABSPATH . WPINC . '/class-wp-error.php' );  //錯誤類
require( ABSPATH . WPINC . '/pomo/mo.php' );

require_wp_db(); //開始加載數據庫類

wp_start_object_cache();  //開始wp對象緩存

require( ABSPATH . WPINC . '/default-filters.php' );  //加載默認filter

多占點的配置

add_filter和apply_filter的一些使用

register_shutdown_function( 'shutdown_action_hook' );  //程序結束前清理輸出緩沖區

wp_not_installed()  如果沒有安裝則運行wp安裝程序

$GLOBALS['wp_embed'] = new WP_Embed(); 用戶插入視頻

wp_plugin_directory_constants() 定義wp-content路徑

定義cookie相關常量

定義並執行ssl常量

等環境配置。

wp();來看wp方法。

public function main($query_args = '') {
$this->init();  //設置當前用戶
$this->parse_request($query_args); //解析查詢請求
$this->send_headers();  //設置http頭
$this->query_posts();  //根據查詢變量設置Loop
$this->handle_404();  //如果找不到,設置404
$this->register_globals();  //注冊全局變量

/**
* Fires once the WordPress environment has been set up.
*
* @since 2.1.0
*
* @param WP $this Current WordPress environment instance (passed by reference).
*/
do_action_ref_array( 'wp', array( &$this ) );  //wordpress環境變量准備完成之后執行  
}

后面就是加載模板


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM