wordpress 目錄、數據結構和解析原理

**********php

根目錄css

**********html

1.index.php:wordpress核心索引文件,即博客輸出文件。前端

2.license.txt:WordPress GPL許可證文件。web

3.my-hacks.php:定義了博客輸出以前處理的追加程序。默認安裝中並無這個文件,但若是存在,它就會被管理頁面引用。ajax

4.readme.html:WordPress安裝導言。數據庫

5.wp-atom.php:輸出Atom信息聚合內容。json

6.wp-blog-header.php:根據博客參數定義博客頁面顯示內容。api

7.wp-cron.php數組

8.wp-comments-post.php:接收評論,並把其添加到數據庫。

9.wp-commentsrss2.php:用來生成日誌評論的RSS2信息聚合內容。

10.wp-config-sample.php:把WordPress鏈接到MySQL數據庫的示例配置文件。

11.wp-config.php:這是真正把WordPress鏈接到MySQL數據庫的配置文件。默認安裝中雖不包括它,但因爲WordPress運行須要這一文件,所以,用戶須要編輯這個文件以更改相關設置。

12.wp-feed.php:根據請求定義feed類型並其返回feed請求文件。

13.wp-links-opml.php:生成OPML格式的連接(經過WordPress管理菜單添加)列表。

14.wp-login.php:定義註冊用戶的登錄頁面。

15.wp-mail.php:用來獲取經過郵件提交的博文。這個文件的URL一般被添加到cron任務中,這樣cron就會按期檢索文件並接收郵件日誌。

16.wp-pass.php:審覈受密碼保護文章的密碼並顯示被保護文章。

17.wp-rdf.php:生成RDF信息聚合內容。

18.wp-register.php:容許新用戶經過聯機表單註冊用戶名。

19.wp-rss.php:生成RSS信息聚合內容。

20.wp-rss2.php:生成RSS2信息聚合內容。

21.wp-settings.php:運行執行前的例行程序,包括檢查安裝是否正確,使用輔助函數,應用用戶插件,初始化執行計時器等等。

22.wp-trackback.php:處理trackback請求。

23.wp.php:顯示博客日誌的簡單模板。並無什麼神奇之處,但包括了部分index.php內容。

24.xmlrpc.php:處理xmlrpc請求。用戶無需經過內置的網絡管理界面就可發佈文章。

**********

wp-admin

**********

1.wp-admin/admin.php:管理文件的核心文件。用來鏈接數據庫,整合動態菜單數據,顯示非核心控制頁面等。

2.wp-admin/admin-db.php

3.wp-admin/admin-footer.php:定義全部管理控制檯的頁腳。

4.wp-admin/admin-functions.php:定義了管理控制檯使用的多種函數。5.wp-admin/admin- header.php:定義了管理控制檯的上半部份內容,包括菜單邏輯 (menu logic)的 menu-header.php文件。

6.wp-admin/bookmarklet.php:使用書籤功能時,定義彈出頁面。撰寫日誌時使用默認的edit-form.php文件。

7.wp-admin/categories.php:定義管理頁面的類別管理。參考: Manage – Categories

8.wp-admin/cat-js.php

9.wp-admin/edit.php:定義管理頁面的日誌管理。參考:  Manage – Posts

10.wp-admin/edit-comments.php:定義管理頁面的評論管理。參考:  Manage – Comments

11.wp-admin/edit-form-advanced.php:定義管理頁面的日誌高級編輯形式管理,包括post.php。參考:  Write – Write Post – Advanced

12.wp-admin/edit-form.php:定義管理頁面的日誌簡單編輯形式管理,包括post.php。參考:  Write – Write Post

13.wp-admin/edit-form-comment.php:編輯特定日誌評論。

14.wp-admin/edit-form-ajax-cat.php

15.wp-admin/edit-link-form.php

16.wp-admin/edit-page-form.php:定義管理模塊頁面的頁面編輯,包括post.php和page-new.php。參考: Write – Write Page

17.wp-admin/edit-pages.php:定義管理模塊頁面的頁面管理。參考:  Manage – Pages

18.wp-admin/execute-pings.php

19.wp-admin/import.php

20.wp-admin/index.php:默認管理頁面。根據用戶請求顯示相應的頁面。

21.wp-admin/inline-uploading.php

22.wp-admin/install-helper.php:定義數據庫維護函數,包括popular-in-plugins maybe_create_table() 和maybe_add_column()。

23.wp-admin/install.php:安裝WordPress。

24.wp-admin/link-add.php:連接添加。參考:  Links – Add Link

25.wp-admin/link-categories.php:連接分類管理。參考: Links – Link Categories

26.wp-admin/link-import.php:導入連接。參考: Links – Import Links

27.wp-admin/link-manager.php:連接管理。參考:  Links – Manage Links

28.wp-admin/link-parse-opml.ph:導入連接時,用來解析OPML文件。

29.wp-admin/list-manipulation.js

30.wp-admin/list-manipulation.php

31.wp-admin/menu-header.php:用於在管理界面顯示菜單。

32.wp-admin/menu.php:定義了默認管理菜單結構。

33.wp-admin/moderation.php:定義了評論審覈函數。

34.wp-admin/options.php:升級後,用來更改全部設置。

35.wp-admin/opt(www.111cn.net)ions-discussion.php:管理評論和trackback相關選項。參考:  Options –Discussion

36.wp-admin/options-general.php:管理基本配置選項。參考: Options – General

37.wp-admin/options-head.php

38.wp-admin/options-misc.php:設置文件上傳,連接跟蹤,自定義」hacks」等相關選項。參考:Options– Miscellaneous

39.wp-admin/options-permalink.php:管理永久連接選項。參考: Options – Permalinks

40.wp-admin/options-reading.php:設置如何把網站信息發送到讀者瀏覽器或其它應用程序。參考: Options– Reading

41.wp-admin/options-writing.php:管理日誌撰寫界面。參考:Options – Writing

42.wp-admin/page-new.php:建立新頁面。

43.wp-admin/plugin-editor.php:編輯插件文件。

44.wp-admin/plugins.php:管理插件。

45.wp-admin/post.php:建立新日誌。

46.wp-admin/profile-update.php

47.wp-admin/profile.php:管理我的資料或配置。

48.wp-admin/setup-config.php:安裝時,用來建立wp-config.php文件。

49.wp-admin/sidebar.php

50.wp-admin/templates.php:編輯服務器可寫文件。

51.wp-admin/theme-editor.php:編輯特定主題中的文件。

52.wp-admin/themes.php:管理主題。

53.wp-admin/update-links.php

54.wp-admin/upgrade-functions.php:定義了版本升級函數。

55.wp-admin/upgrade-schema.php:定義了升級中使用的默認表格結構和選項。

56.wp-admin/upgrade.php:版本升級。

57.wp-admin/user-edit.php:編輯用戶。

58.wp-admin/users.php:管理用戶。

59.wp-admin/wp-admin.css:定義了管理控制檯的默認樣式表。

60.wp-admin/xfn.js

**********

wp-includes

**********

wp-includes目錄

1.wp-includes/cache.php

2.wp-includes/capabilities.php

3.wp-includes/class-IXR.php:Incutio XML-RPC庫。包括了 XML RPC支持函數。由http://scripts.incutio.com/xmlrpc/提供支持。

4.wp-includes/classes.php:包括了基本的類,如核心文章提取機制WP_Query和改寫管理WP_Rewrite。

5.wp-includes/class-pop3.php:包括了支持使用POP郵箱的類。可供wp-mail.php 使用。

6.wp-includes/class-snoopy.php:Snoopy是一個PHP類,用來模仿Web瀏覽器的功能,它能自動完成檢索網頁和發送表單的任務。

7.wp-includes/comment-functions.php

8.wp-includes/default-filters.php

9.wp-includes/feed-functions.php

10.wp-includes/functions-compat.php:即新版本PHP中用來支持老版本PHP的函數文件。

11.wp-includes/functions-formatting.php:用於清理XHTML和用特定字符集正確格式化文本。

12.wp-includes/functions-post.php:定義了在數據庫中管理日誌,查詢用戶權限,提取和撰寫評論等函數。

13.wp-includes/functions.php:包含許多重要的支持函數,它是WordPress中最大的文件,函數數量幾乎是第二大文件的兩倍。

14.wp-includes/gettext.php:PHP-gettext GPL 翻譯庫組成部分。

15.wp-includes/kses.php:用來渲染和過濾日誌或評論中的HTML。

16.wp-includes/links.php:用來管理和使用WordPress的連接功能。

17.wp-includes/locale.php:用來替代默認的星期和月份值。

18.wp-includes/pluggable-functions.php

19.wp-includes/registration-functions.php

20.wp-includes/rss-functions.php

21.wp-includes/streams.php:定義了包裝文件流和字符流的類。

22.wp-includes/template-functions-author.php:包含了與日誌做者或評論人相關的主題函數。

23.wp-includes/template-functions-category.php:包含了與類別相關的主題函數。

24.wp-includes/template-functions-comment.php:包含了與評論相關的主題函數。

25.wp-includes/template-functions-general.php:包含了常規主題函數。

26.wp-includes/template-functions-links.php:包含了與連接相關的主題函數。

27.wp-includes/template-functions-post.php:包含了與日誌相關的主題函數。

28.wp-includes/template-functions.php:包含了以上全部」template-」文件。

29.wp-includes/template-loader.php

30.wp-includes/vars.php:用來設置雜項變量。

31.wp-includes/version.php:用來設置當前使用的WordPress版本。

32.wp-includes/wp-db.php:包含了用來鏈接MySQL數據庫的函數。

33.wp-includes/wp-l10n.php:提供支持多語言版本的函數

 

二、數據結構

wordpress共有 11個數據表,按照功能劃分爲 5 類

用戶信息:wp_users(存儲評論)、wp_usermeta(存儲用戶的元數據)

連接信息:wp_links(存儲友情連接)

文章及評論信息:wp_posts(存儲文章)、wp_postmeta(存儲文章的元數據)、wp_comments(存儲評論)、wp_commentmeta(存儲評論元數據)

對分類、連接分類,標籤管理:wp_terms(存儲每一個目錄標籤)、wp_term_relationships(存儲每一個文章、連接和對應分類的關係)、wp_term_taxonomy(存儲每一個目錄、標籤所對應的分類)

全局設置信息:wp_options(存儲WordPress系統選項和插件、主題配置)

 

wordpress <wbr>目錄、數據結構和解析原理

 

 

在WordPress的數據庫結構中,存儲系統選項和插件配置的wp_options表是比較獨立的結構,採用了key-value模式存儲。post,comment,user 則是三個基本表加上拓展表的組合。以wp_users爲例,wp_users已經存儲了每一個用戶會用到的基本信息,好比 login_name、display_name、 password、email等經常使用信息,存儲一些不經常使用的數據,是將數據存在 wp_usermeta中。

 

三、工做原理

Wordpress是一個單入口的文件,全部的前端處理都必須通過index.php,這是經過修改web服務器的rewrite規則來實現的。

 

第一步:加載index.php文件

 

wordpress <wbr>目錄、數據結構和解析原理

第二步:加載wp_blog_header.php文件

 

wordpress <wbr>目錄、數據結構和解析原理

a、  對$wp_did_header進行賦值,這樣若是代碼塊已經執行過,判斷就會失敗,代碼塊就不會再執行。這種作法能夠確保wp-blog-header.php文件只執行一次

b、  加載WP根目錄下wp-load.php文件,執行初始化工做,如初始化常量、環境、加載類庫和核心代碼等完成WordPress環境啓動工做,如加載wp-includes目錄下functions.php(函數庫)、class-wp.php(類庫)、plugin.php(插件)、pomo目錄(語言包)、query.php(數據請求)、theme.php(加載主題文件)、post-template.php(文章模板)、comment.php(評論模板)、rewrite.php(URL重寫)。

c、  執行wp()函數,執行內容處理工做,如根據用戶的請求調用相關函數獲取和處理數據,爲前端展現準備數據

d、  加載根目錄絕對路徑下wp-includes目錄中template-loader.php文件,執行主題應用工做,如根據用戶的請求加載主題模板。

 

 

第三步:加載wp_load.php文件 (初始化)

 

a、  加載wp_config.php文件

該文件初始化常量(如:定義絕對路徑、設定功能文件及內容文件路徑等)並加載wp-config.php文件

b、  加載wp_settings.php文件

該文件主要用於建立和定義常見變量、函數和類的庫來爲WordPress運行作準備,也就是說WordPress運行過程當中使用的大多數變量、函數和類等核心代碼都是在這個文件中定義的。這個文件至關於一個總控制器,不少常量定義、函數定義等都是在其餘文件中完成,而該文件的做用就是執行那些文件或執行在那些文件中已經定義好的函數。

 

第四步:執行wp()函數

 

wordpress <wbr>目錄、數據結構和解析原理

wordpress <wbr>目錄、數據結構和解析原理

 

a、  調用$wp->main(),即調用對象$wp的main()方法,該對象是class-wp.php文件中WP類實例化獲得的,該類主要用於啓動WordPress環境

b、  判斷$wp_the_query是否設置,若未設置將其賦值爲$wp_query,該對象是query.php文件中WP_Query類實例化獲得的,該類做用強大,幾乎WP所須要的全部數據信息都是由該類獲得的,因此內容的準備工做基本都是這段代碼來完成的,

 

第五步:加載template-loader.php文件

 

a、若是常量WP_USE_THEMES存在且值爲真,則判斷頁面類型同時給$template變量賦相應值;其中,判斷頁面類型的函數如is_404()位於wp-includes目錄下query.php文件,該函數返回對象$wp_query中is_404()方法

b、若is_404()爲false則繼續往下判斷是不是其餘頁面;

c、若爲true則給$template賦值爲get_404_template(),該函數位於wp-includes目錄下template.php文件,它返回get_query_template('404'),

d、而該函數將頁面類型傳入數組$templates並應用調用函數locate_template($templates)且應用過濾器;

e、locate_template()函數根據傳入數組在主題中查找到相應的文件而後交給load_template()函數而後使用require加載,最終將用戶須要的頁面呈現出來;

 

wordpress <wbr>目錄、數據結構和解析原理

四、接口

對外的接口形式有:藉助應用插件、二次開發

a、添加json-api 插件

   http://test.wordpress.imobile.com.cn/?json=get_favorite_count    //得到文章收藏數

http://test.wordpress.imobile.com.cn/?json=get_author_index     //得到做者列表

   可在wp-content\plugins\json-api\controllers\core.php文件下添加方法

b、二次開發

   http://test.wordpress.imobile.com.cn/wp-admin/wp_test_api.php?post_title=我是來測試的

   在 wp-admin\下建立wp_test_api.php 接口文件

 

五、wordpress特色

a、  安裝簡單,操做方便

b、  具備很高的擴展性,插件、模板重多。插件安裝目錄:wp-content/plugins/ 模板安裝目錄:wp-content/themes/

c、  wordpress 是 MC結構,是經過php直接調用 include 裏面的函數,封裝了N多函數,幾乎全部的業務包括與數據庫的鏈接,查詢等等操做也是經過函數完成。

d、  wordpress數據結構相似於NoSql類型數據庫,基本上相似於 類型—鍵值名—鍵值,都是鍵值隊的形式,

相關文章
相關標籤/搜索