WordPress核心文件功能及其載入
WordPress中的各種功能都是通過其核心文件來完成(通過調用核心文件中的類和函數等),其核心文件都放在WPINC(即wp- includes)目錄中,這些核心文件的用途,及其加載的順序和位置,對我們理解WordPress的執行流程和架構至關重要。
注:爲了是思路更加的清晰易懂,暫時不考慮後臺管理相關的文件,以及多博客/站點相關的文件!
加載WP核心文件:
如下列表所示,這42個文件是核心文件中的核心,它們定要了WordPress使用的核心類和函數庫,無可執行代碼,只有當調用時纔會執行相應的函數。這些文件都在wp-setting.php文件中依照一定的條件被加載,其功能見如下列表:
- WPINC/load.php,定義一組加載 WP 所需要的函數,無執行代碼;
- WPINC/default-constants.php,定義一組函數,這些函數對那些能夠被重寫的常量和全局變量進行默認賦值,它們通常可以在 wp-config.php 中重新配置,無執行代碼;
- WPINC/compat.php,提供某些 PHP 版本缺少的函數(用於支持不同版本 PHP 上的兼容和移植),無執行代碼;
- WPINC/functions.php,定義 WP 主要的 API,無執行代碼;
- WPINC/classes.php,定義 WP 主要的類,無執行代碼。
- WPINC/plugin.php,定義插件 API,這些 API 用於創建 action、filter、以及鉤子函數和方法,無執行代碼;
- WPINC/pomo/mo.php,定義語言處理類 MO,並加載文件,無執行代碼:
- WPINC/pomo/translations.php,定義對 entry 進行翻譯的相關類,並加載文件,無執行代碼:
- WPINC/pomo/entry.php,定義翻譯實體類 Translation_Entry,無執行代碼;
- WPINC/pomo/streams.php,定義一組類,用於從文件讀入數據流,無執行代碼。————————我是基本功能分割線————————
- WPINC/l10n.php,定義一組進行語言翻譯的 API/函數,無執行代碼。
- WPINC/formatting.php,定義 WP 主要格式化API,用於對文本、字符串、函數輸出進行格式化,無執行代碼;
- WPINC/query.php,定義一組 WP 的查詢 API,無執行代碼;
- WPINC/theme.php,定義一組主題、模板和樣式表函數,無執行代碼;
- WPINC/user.php,定義一組 WP 的用戶 API,無執行代碼;
- WPINC/meta.php,定義一組元數據 API,這些 API 用於獲取和操作 WP 中各種對象類型的元數據,一個對象的元數據簡單的表示爲鍵值對,對象可能包含多個元數據實體,他們有相同的鍵但不同的值,無執行代碼;
- WPINC/general-template.php,定義常用的模板標籤,它們可以在模板中任意使用,無可執行代碼;
- WPINC/link-template.php,定義一組模板中處理鏈接的函數(例如處理固定鏈接),無可執行代碼;
- WPINC/author-template.php,定義一組模板中處理作者的函數,這些函數在主題中使用,並且必須出現在 WP LOOP 中,無可執行代碼;
- WPINC/post-template.php,定義一組模板中處理文章的函數,用於獲取 Loop 中當前文章的內容,無可執行代碼;
- WPINC/category.php,定義一組 WP 的目錄 API,無可執行代碼;
- WPINC/category-template.php,定義一組目錄的模板標籤和 API,無可執行代碼;
- WPINC/comment.php,定義一組 WP 的評論 API,無可執行代碼;
- WPINC/comment-template.php,定義一組評論的模板標籤,旨在 Loop 中有用,無可執行代碼;
- WPINC/feed.php,定義一組 WP 的 Feed API,其中大部分只在 Loop 中使用,無可執行代碼;
- WPINC/bookmark.php,定義一組 WP 的友情鏈接/書籤 API,無可執行代碼;
- WPINC/bookmark-template.php,定義一組書籤的模板標籤,無可執行代碼;
- WPINC/cron.php,定義一組 WP 的 CRON(定時任務) API,用於進行事件調度,無可執行代碼;
- WPINC/deprecated.php,一組已廢棄的 API,無可執行代碼;
- WPINC/class.wp-dependencies.php,定義類 WP_Dependencies 和 _WP_Dependency,用於反壓腳本隊列,這些類由 WP_Scripts類和 WP 腳本隊列 API 重構而來,無可執行代碼;
- WPINC/class.wp-scripts.php,定義類 WP_Scripts,繼承自 WP_Dependencies,功能同上,無可執行代碼;
- WPINC/functions.wp-scripts.php,定義一組 WP 的腳本隊列 API,功能同上,無可執行代碼;
- WPINC/functions.wp-styles.php,定義一組 WP 的樣式隊列 API,無可執行代碼。
- WPINC/taxonomy.php,定義一組 WP 的分類方法(與目錄概念不同,是在目錄之上的分類) API, 無可執行代碼;
- WPINC/http.php,定義一組簡化和統一 http 請求的 API,無可執行代碼;
- WPINC/class- http.php,定義一組簡化和統一 http 請求的類 WP_Http,WP_Http_Fsockopen,WP_Http_Fopen,WP_Http_Streams,WP_Http_ExtHTTP,WP_Http_Curl,WP_HTTP_Proxy,WP_Http_Cookie,WP_Http_Encoding, 用於標準化 http 請求,處理 cookies 和 gzip 編碼和解碼,無可執行代碼;
- WPINC/nav-menu.php,定義一組 WP 中導航菜單 API,屬於 WP3.0 新添加功能,無可執行代碼;
- WPINC/nav-menu-template.php,定義一組導航菜單的模板標籤及 API,無可執行代碼。
- WPINC/pluggable.php,這裏面的函數可以被插件覆蓋,如果插件沒有重新定義這些函數,則這些函數將會被使用,無可執行代碼;
- WPINC/pluggable-deprecated.php,被廢棄的可插件覆蓋函數,無可執行代碼;
- WPINC/locale.php,定義日期和時間的本地化對象類 WP_Locale,無可執行代碼;
- WPINC/post-thumbnail-template.php,定義一組 WP 的文章略圖模板標籤,無可執行代碼。
至此,WP 已經加載大多數的核心文件,wp-includes 目錄下未被加載的文件基本爲第三方庫文件、已廢棄文件,或者和多博客相關的文件。他們將會在相應的函數中根據需要加載:
- atomlib.php, 在WPINC/functions.php中的wp_maybe_load_widgets()函數中加載;
- cache.php, 在WPINC/load.php中的wp_start_object_cache()函數中加載;
- class-feed.php, 在WPINC/feed.php中的fetch_feed()函數中加載;
- class-IXR.php, 在xmlrpc.php文件中加載;在WPINC/comment.php中的pingback()和weblog_ping()函數中加載;在WPINC/functions.php中的do_enclose()函數中加載;
- class-json.php, 在WPINC/compat.php中的json_encode()和json_decode()函數中加載;
- class-oembed.php, 在WPINC/media.php中的wp_oembed_get()和wp_oembed_add_provider()函數中加載;
- class-phpass.php, 在WPINC/pluggable.php中的wp_hash_password()和wp_check_password()函數中加載;
- class-phpmailer.php, 在WPINC/pluggable.php中的wp_mail()函數中加載;
- class-pop3.php, 在wp-mail.php中加載;
- class-simplepie.php, 在WPINC/class-feed.php中加載;
- class-smtp.php, 在WPINC/pluggable.php中的wp_mail()函數中加載;
- class-snoopy.php, 已廢棄,由http.php文件替代;
- default-embeds.php, 在WPINC/functions.php中的wp_maybe_load_embeds()函數中加載;
- default-widgets.php, 在WPINC/functions.php中的wp_maybe_load_widgets()函數中加載;
- feed-atom.php, 在WPINC/functions.php中的do_feed_atom()函數中加載;
- feed-atom-comments.php, 在WPINC/functions.php中的do_feed_atom()函數中加載;
- feed-rdf.php, 在WPINC/functions.php中的do_feed_rdf()函數中加載;
- feed-rss2.php, 在WPINC/functions.php中的do_feed_rss2()函數中加載;
- feed-rss2-comments.php, 在WPINC/functions.php中的do_feed_rss2()函數中加載;
- feed-rss.php, 在WPINC/functions.php中的do_feed_rss()函數中加載;
- ms-default-constants.php, 在WPINC/ms-setting.php中加載;
- ms-files.php
- ms-load.php
- registration.php, 在wp-activate.php, wp-signup.php, wp-login.php中加載;
- registration-functions.php, 已廢棄,由registration.php文件替代;
- rss.php, 已廢棄,由class-simplepie.php文件替代;
- rss-functions.php, 已廢棄,由rss.php文件替代;
- wp-db.php, 在WPINC/functions.php中的require_wp_db()函數中加載;
- wp-diff.php, 在WPINC/functions.php中的wp_text_diff()函數中加載;
- pomo/po.php, 沒有被加載???
至此WordPress中的所有核心文件的功能及其加載順序或位置都已明晰,我們就可以根據自己的需求對其進行修改(或添加刪除),以達到自身的目的!