久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

WordPress查詢語句概覽

 天中仙 2012-03-08

WordPress如何創(chuàng)建博客頁面?插件又如何修改這一創(chuàng)建過程,?本文對這兩個(gè)問題進(jìn)行了簡要分析,。文章針對即將進(jìn)行高級查詢和永久鏈接的插件開發(fā)人員以及希望進(jìn)一步了解WordPress的開發(fā)人員,希望大家能通過本文的介紹進(jìn)一步擴(kuò)展WordPress的功能或修復(fù)WordPress中的BUG,。

大家可以通過本文中提到的WordPress核心PHP文件和函數(shù)了解更多相關(guān)信息,。

下面是WordPress決定網(wǎng)頁顯示內(nèi)容(日志或是頁面)的過程以及相關(guān)顯示步驟:

  1. 訪問者首次點(diǎn)擊或輸入我們某個(gè)博客頁面的URL時(shí),WordPress會執(zhí)行一些核心文件(如(wp-config.php, wp-settings.php等),。執(zhí)行任何一個(gè)PHP文件都會引發(fā)/包含其它PHP文件,,因此對文件加載順序的細(xì)節(jié)有興趣的讀者可以以 index.php為起點(diǎn),跟蹤文件的反應(yīng)鏈,。
  2. WordPress加載我們所激活的插件并將插件初始化(調(diào)用插件的init動作函數(shù)),。
  3. 出于對插件國際化的考慮,WordPress加載“文本域”,,并從當(dāng)前主題中加載functions.php文件,。
  4. WordPress運(yùn)行wp-includes/functions.php中的wp()函數(shù)。該函數(shù)將調(diào) 用$wp->main()($wp是WP類的一個(gè)對象,,$wp在wp-includes/classes.php中有定義),。根據(jù)這一 步,WordPress會:
  1. 用WP->parse_request()將URL解析成一個(gè)查詢說明
  2. 通過$wp_query->parse_query()($wp_query是類WP_Query的一個(gè)對象,,在wp- includes/query.php中定義)設(shè)置條件標(biāo)簽使用的所有is_ 變量,。注意,由于WP->parse_request()已經(jīng)事先完成了解析任務(wù),,因此WP_Query->parse_query()在這 里不會再執(zhí)行任何解析工作,。
  3. 在WP_Query->get_posts()函數(shù)中將查詢說明轉(zhuǎn)換為MySQL數(shù)據(jù)庫查詢,執(zhí)行該數(shù)據(jù)庫查詢,,獲取日志列表,。將日志保存在 $wp_query對象中,,以便日后用于WordPress主循環(huán)中。
  4. 處理404錯(cuò)誤,。
  5. 發(fā)送博客的HTTP信息頭,。
  6. 為WordPress主循環(huán)設(shè)置變量。
  7. WordPress加載我們的模板,,根據(jù)模板層級決定應(yīng)使用的模板文件,,然后執(zhí)行該模板文件(執(zhí)行時(shí)基本上會依照模板文件的操作說明)。WordPress也可以執(zhí)行某個(gè)feed文件來代替指定模板文件(比如wp-rss2.php),。
  8. 一般情況下,,模板文件或feed文件會執(zhí)行WordPress主循環(huán)以顯示博客日志或是某個(gè)靜態(tài)頁面
  9. 模板文件和feed文件還會顯示一些存檔,、類別的永久鏈接或是使用內(nèi)置WordPress函數(shù)的日志的永久鏈接,。

WP->parse_request()

詳細(xì)信息

上文中提到, WP->parse_request()(wp-includes/classes.php文件中,,WP類的一部分)將URL解析成一個(gè)查詢說明,。下面是對解析步驟的概括:

  1. URL中刪去GET變量(例如,URL中“,?”后的所有內(nèi)容),,網(wǎng)站主頁URL中的GET變量也應(yīng)刪除。
  2. 調(diào)用 $wp_rewrite->wp_rewrite_rules()($wp_rewrite是類WP_Rewrite的一個(gè)對象,,在wp- includes/rewrite.php中定義)以獲取當(dāng)前有效的重寫規(guī)則,。重寫規(guī)則是一系列關(guān)于WordPress永久鏈接格式的規(guī)定以及格式與規(guī)定 相匹配時(shí)的操作說明。例如,,假設(shè)現(xiàn)在有一個(gè)規(guī)則,,該規(guī)則能夠與刪除變量后的永久鏈接(如category/abc)相匹配,且該規(guī)則說明表 示,,category/abc意味著請求“abc”類別,。那么這也算是主頁的一個(gè)重寫規(guī)則(網(wǎng)站URL后沒有其它內(nèi)容)。
  3. 按順序檢查重寫規(guī)則,,直到找到某個(gè)重寫規(guī)則與永久鏈接能相匹配,。沒有條件符合要求時(shí)返回404錯(cuò)誤。如果有條件符合要求,,WordPress會根據(jù)規(guī)則的說明摘取信息,。
  4. 獲取當(dāng)前有效的查詢變量列表。WordPress會檢查所有查詢變量,,判斷鏈接解析,、日志提交或GET提交過程是否已經(jīng)設(shè)定了這些變量。如果變量被設(shè) 定,,WordPress將變量值存入查詢說明數(shù)組($wp->query_vars,,wp-includes/classes.php中WP類的一 部分),。

插件能夠修改的內(nèi)容

下面列出插件對以上默認(rèn)查詢和永久鏈接動作所具備的修改范圍。

  • 添加,、修改或刪除重寫規(guī)則,,從而影響永久鏈接的解析方式。一般情況下插件會調(diào)用wp-includes/rewrite.php 中的函數(shù)(如add_rewrite_rule, add_rewrite_endpoint等)而不是用過濾器函數(shù)或動作函數(shù)來完成以上添加,、修改或刪除過程,。因?yàn)? WP_Rewrite->wp_rewrite_rules()通常只獲取之前保存的重寫規(guī)則(這些重寫規(guī)則作為“rewrite_rules”選 項(xiàng)被保存在WordPress數(shù)據(jù)庫里)。因此如果我們要修改重寫規(guī)則,,首先要調(diào)用$wp_rewrite->flush_rules()強(qiáng)制進(jìn)行 重新計(jì)算,。這一動作要在插件的init動作中完成。
  • 添加或刪除查詢變量,,從而影響日志,、GET變量和永久鏈接請求(query_vars過濾器)中查詢說明所保存的變量。

保存變量值后,,修改查詢說明(request過濾器或parse_request動作函數(shù),;若希望使用條件標(biāo)簽檢驗(yàn),可使用parse_query或pre_get_posts動作函數(shù),。is_變量設(shè)置完畢后WordPress才運(yùn)行這兩個(gè)函數(shù))。

  • MySQL數(shù)據(jù)庫查詢從查詢說明中生成后,,插件可修改MySQL數(shù)據(jù)庫查 詢(posts_where, posts_join, posts_groupby, posts_orderby, posts_distinct, posts_fields, post_limits, posts_where_paged, posts_join_paged, and posts_request 過濾器函數(shù)),。
  • 修改數(shù)據(jù)庫查詢的結(jié)果(the_posts過濾器)。
  • 改寫默認(rèn)模板文件的選擇(template_redirect動作),。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多