<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >本文著重介紹了“鉤子”的應用程序接口,這里的鉤子又被稱為“過濾器”和“動作”。WordPress通過鉤子來運行插件。這些鉤子也可以用在主題中,WordPress中插件開發人員可以使用的API(應用程序接口)鉤子(hook)進行擴展開發 ## **鉤子,動作與過濾器** > WordPress用鉤子將插件“勾進”WordPress系統中,讓插件與WordPress相連接。也就是說,通過鉤子,WordPress能夠在特定時間內調用插件中的函數,讓插件開始運行。下面是鉤子的兩種形式: > 1. 動作(Actions):在系統運行的某些特定時間點或發生特定事件時,WordPress核心程序會調用一些鉤子。這里WordPress所調用的鉤子被稱為“動作”。插件用動作API來指定在上述特定時間點內需要執行的PHP函數。 > 2. 過濾器(Filters):WordPress將不同類型文本添加到數據庫或發送給瀏覽器窗口前,需要調用一些鉤子來修改上述不同類型文本。這里WordPress所調用的鉤子被稱為“過濾器”。通過使用濾器API,插件可以執行一個或多個PHP函數以修改上述不同類型文本。 >有時我們可以直接通過動作或過濾器實現以上效果。例如,如果我們希望用插件來改變某篇日志內容,可以為publish_post添加一個動作函數(保存到數據庫時修改日志),也可以為the_content添加一個過濾器函數(顯示到瀏覽器窗口時修改日志)。 ##**函數引用** **過濾器函數** * has_filters * add_filter() * apply_filters() * current_filter * merge_filters() * remove_filter() * remove_all_filters **動作函數** * has_action * add_action * do_action * do_action_ref_array * did_action * remove_action * remove_all_actions **動作** 動作由發生在WordPress中的特定事件觸發,如發表日志、更改主題、顯示控制板頁面等。插件以執行PHP函數的方式來響應該事件,函數的作用可能是: 更改數據庫資料 發送電子郵件消息 更改瀏覽器窗口上顯示的信息(網站管理員或終端用戶) 基本步驟如下(下文中有詳細介紹): 1. 在插件文件中創建一個可以在事件發生時執行的PHP函數 2. 調用add_action,將動作函數勾入WordPress 3. 將創建的PHP函數存放在插件文件中,激活該函數 **創建動作函數** 要在插件中新建一個動作函數,首先要用插件中該動作的功能來創建一個PHP函數,然后將函數存入插件文件(我們需要將插件文件放在wp-content/plugins目錄下)。例如,如果我們希望每次我們發表新日志,博客都會以電子郵件的方式通知我們的朋友,我們可以定義以下函數: ~~~ function email_friends($post_ID) { $friends = 'bob@example.org,susie@example.org'; mail($friends, "sally's blog updated", 'I just put something on my blog: http://blog.example.com'); return $post_ID; } ~~~ 大多數動作函數都能接受一個參數(通常是日志ID或評論ID,取決于動作的性質)。有些動作函數能接收更多參數——更多信息請參照動作的說明文檔或WordPress源代碼。除參數外,我們也可以獲取WordPress的全局變量,調用其它WordPress函數(或插件文件中的函數)。 函數輸出的內容會出現在調用動作的頁面源代碼中。 注意:其它插件或WordPress核心文件中的函數可能已經使用了我們所創建的函數名稱。 ## **勾入WordPress(連接到WordPress程序中)** 定義PHP函數后,我們要將函數連接到WordPress中。可以在插件文件的全局變量執行域中調用add_action來實現連接: **add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] );** 其中: **hook_name** WordPress動作鉤子的名稱,通過名稱我們可以了解到函數與什么事件相關聯。 **your_function_name** hook_name指定事件后,需要執行的函數名。函數需要是WordPress核心文件中的標準PHP函數,或是我們在插件文件中定義的函數(如上文中定義的'email_friends')。 **priority** 用一個可選的整數型變量來規定函數(與特定動作相關聯)的執行順序,變量值默認為10。若某函數的priority值小于10,優先執行該函數。如果若干函數priority值相等,則按加入動作的順序執行函數。 **accept_args** 用一個可選的整數型變量來定義函數能夠接受的參數數量(默認值為1)。有些鉤子能夠向函數傳遞一個以上參數,因此accept_args實用價值較大。參數引進于WordPress 1.5.1。 根據上面的例子,我們要在插件文件中加入以下代碼行: **add_action ( 'publish_post', 'email_friends' );** 同樣,我們也可以刪除動作鉤子中的動作。 **安裝與激活** 最后我們要安裝文件、激活插件以運行動作鉤子。我們要將創建的PHP函數和add_filter調用存入一個PHP文件并將該PHP文件安裝在wp-content/plugins目錄下。安裝完畢后,在WordPress的管理界面中激活插件;參見管理插件。 **當前動作鉤子** 插件API/常用動作(action)中列出了WordPress現有動作鉤子以及之前WordPress版本的鏈接。 **過濾器(Filters)** 過濾器是WordPres在運行中的特定時間點、對數據進行操作(如將數據加入數據庫,或將數據發送到瀏覽器窗口上)前,用來傳遞數據的函數。WordPress生成頁面時,過濾器位于數據庫和瀏覽器之間;當WordPress將新日志和評論加入到數據庫中時,過濾器位于瀏覽器和數據庫之間。WordPress中大多數輸入和輸出內容都至少經過一個過濾器的傳遞。默認情況下WordPress會執行一些過濾行為,但插件也可以添加自己的過濾器函數。 將過濾器函數加入WordPress的基本步驟如下(下文中有詳細描述): 1. 創建一個可以過濾數據的PHP函數 2. 調用add_filter(),將過濾器函數勾入WordPress 3. 將創建的PHP函數存放在插件文件中,激活該函數 **創建過濾器函數** 過濾器函數將未經修改的數據作為輸入內容,返回修改后的數據(有時會返回空值來表示該數據應該被刪除或忽略)。如果過濾器函數沒有對數據做修改,則應該返回原始數據,方便插件必要時修改數據值。 因此要在插件中新建一個過濾器函數,首先要創建一個PHP函數負責過濾,然后將該PHP函數存入插件文件(插件文件必須位于wp-content/plugins目錄下)。例如,如果希望我們的日志和評論中沒有褻瀆性語言,我們需要定義一個全局變量,列出所有不允許出現的詞語,然后創建PHP函數: ` function filter_profanity($content) { global $profanities; $content=str_ireplace($profanities,'{censored}',$content); return $content; } ` 為什么這里不用循環也可以?這是因為$profanities是一個數組,str_replace可以幫我們循環該數組。 注意:其它插件或WordPress核心文件中的函數可能已經使用了我們所創建的函數名稱。 **將過濾器勾入WordPress(連接到WordPress程序中)** 定義PHP函數后,我們要將過濾器函數連接到WordPress中。可以在插件文件的全局變量執行域中調用add_filter來實現連接: **add_filter ( 'hook_name', 'your_filter', [priority], [accepted_args] );** 其中: **hook_name** WordPress過濾器鉤子的名稱,通過名稱我們可以了解到什么時候需要用到過濾器函數。 **your_function_name** 用于過濾的函數的名稱。函數需要是WordPress核心文件中的標準PHP函數,或是我們在插件文件中定義的函數。 **priority** 用一個可選的整數型變量來規定函數(該函數與特定過濾器相關聯)的執行順序,變量值默認為10。若某函數的priority值小于10,優先執行該函數。如果若干函數priority值相等,則按加入過濾器的順序執行函數。 **accept_args** 用一個可選的整數型變量來定義函數能夠接受的參數數量(默認值為1)。有些鉤子能夠向函數傳遞一個以上參數,因此accept_args實用價值較大。 根據上面的例子,我們要在插件文件的主執行區域中加入以下代碼行,讓WordPress過濾含有褻瀆性內容的評論: **add_filter('comment_text','filter_profanity');** 我們也可以用remove_filter()刪除過濾器鉤子中的過濾器函數。 **安裝與激活** 最后我們要安裝文件、激活插件以運行過濾器鉤子。我們要將創建的PHP函數和add_filter調用存入一個PHP文件并且將該PHP文件安裝在wp-content/plugins目錄下。安裝完畢后,在WordPress的管理界面中激活插件;參見管理插件。 **當前過濾器鉤子** 插件API/常用動作(action)中列出了WordPress現有過濾器鉤子以及之前WordPress版本的鏈接。 **示例** 這是wp-hackers郵件列表中的一個示例。該示例用一個插件來更改(或重寫)默認的bloginfo()函數。這將會修改核心函數。 ~~~ add_filter('bloginfo', 'mybloginfo', 1, 2); add_filter('bloginfo_url', 'mybloginfo', 1, 2); function mybloginfo($result='', $show='') { switch ($show) { case 'wpurl': $result = SITE_URL; break; case 'template_directory': $result = TEMPL_DIR; break; default: } return $result; } ~~~ **刪除動作和過濾器** 有時我們可能會希望插件禁用WordPress內置的、或者其它插件創建的某個動作或過濾器。這時可以調用remove_filter('filter_hook','filter_function')或remove_action('action_hook','action_function')幫助我們達到期望的效果。 例如發表新日志時,用remove_action('publish_post','generic_ping'); 可以阻止博客發送ping。 注意,如果鉤子優先級的值不是10,那么我們必須在調用remove_action時指定優先級。一般來說,除非我們完全了解所要刪除的信息以及信息的作用,否則不能隨意刪除任何信息——可以查看WordPress源代碼或者其它插件源代碼以了解信息。 **可插入式函數** 除了上面介紹的鉤子(動作和過濾器),我們還可以通過重寫WordPress函數來讓插件影響WordPress的運行。事實上,WordPress為插件提供了一個能夠重新定義的小型函數集。函數集中的函數被稱為可插入式函數,存儲在wp-includes/pluggable.php下。如果所有插件都加載完畢后,可插入式函數仍然處于未定義狀態,這時WordPress會加載這些函數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看