您需要了解的有關 WordPress 鉤子的所有信息
已發表: 2015-07-11迷上了 WordPress 鉤子?
當 WordPress 致力於為您的網站呈現所需的組件時,幕後發生了很多事情。 每個頁面由相當多的函數和數據庫查詢組成。 WordPress 核心和主題協同工作以輸出文本、圖像、樣式表和其他文件。 在瀏覽器的幫助下,所有這些部分都被解釋並放在一個網頁中。 Hooks 提供了自定義、擴展和增強 WordPress 的能力。
鉤子被恰當地命名是因為我們可以從字面上“鉤入” WordPress 來檢索、插入或修改數據,或者在幕後執行其他任務。 從某種意義上說,我們將自定義代碼“掛”在這些鉤子上。 眾所周知,修改 WordPress 核心並不是一個好主意。 因此,WordPress 中的操作鉤子和過濾器鉤子是更改現有功能或創建新功能的最佳方式。
鉤子的種類
進行自定義時,掛鉤是必不可少的部分。 鉤子有兩種主要類型:動作鉤子和過濾器鉤子。 每個都提供不同的東西,因此了解何時使用哪個很重要。
鉤子不能隨便扔在任何地方。 需要有一些東西可以“吸引”。 有必要為該鉤子設置執行點。 好消息是,在整個 WordPress 核心中,都有可供參考的內置掛鉤。

為什麼要使用鉤子
由於 WordPress 的許多核心功能使用操作和過濾器,因此可以使用鉤子進行很多更改。 對於使用 WordPress 進行開發的任何人以及想要修改 WordPress 或主題行為的設計人員來說,了解鉤子是絕對必要的。
動作掛鉤
動作鉤子表明發生了一些事情,不要與事件本身混淆。 操作由 WordPress 中發生的特定事件觸發。 事件的示例可能是發布帖子、更改主題或激活插件等。 操作允許您在頁面處理的特定點添加額外的功能。 動作掛鉤可以執行以下操作:
- 修改 WordPress 數據庫中的數據
- 修改瀏覽器中顯示的內容
- 發生事件時發送電子郵件
- 向頁面添加小部件、菜單或自定義消息

動作掛鉤示例
add_action( $hook, $function_to_add, $priority, $accepted_args );
add_action 函數的必需參數是要添加的鉤子和函數。 包括優先級是可選的。 使用基於 1 到 999 範圍的整數值,此數字確定該特定掛鉤的函數的優先級順序。 您可能不需要它,但是當您需要傳遞或接受多個參數時使用最後一個參數。
讓我們看一個基本的動作鉤子:
// This is the function, name it accordingly
function custom_welcome_text() { ?>
<div class="optional-custom-class">Hello WordPress!</div>
<?php }
// Action function that outputs the function above into the theme hook
add_action( 'welcome_hook', 'custom_welcome_text', 5 );
這個基本鉤子會將“Hello WordPress”添加到頁面頂部。 它的優先級為 5。較低的數字對應於較早的執行。 默認情況下,它設置為 10,因此此示例在默認值之前執行。

過濾器掛鉤
讓我們回顧一個常見的場景以及過濾鉤子是如何發揮作用的。 想想您的用戶訪問您的網站的所有時間,並加載一個帖子供他們閱讀。 作為 WordPress 頁面生命週期的一部分,WordPress 會在數據庫中查詢該帖子,然後將其返回到瀏覽器,以供用戶閱讀。 這一切聽起來很簡單,但在提供內容之前,WordPress 會通過任何已建立的過濾器運行數據。 這些過濾器掛鉤可以在需要時輕鬆創建。
可以這樣想:動作由特定事件觸發,但過濾器允許在處理數據時攔截和修改數據。 當您需要在將數據呈現到瀏覽器或將數據從瀏覽器保存到數據庫之前攔截、管理或返回數據時,使用過濾器掛鉤。 例如,您可能希望在 WordPress HTML 元素中插入另一個 CSS 類,或註冊其他元字段類型。 這兩者都可以使用過濾器掛鉤來執行。

當 WordPress 生成頁面時,過濾器位於數據庫和瀏覽器之間。 此外,它們位於瀏覽器和數據庫之間,因為 WordPress 將新帖子和評論添加到數據庫中。 正因為如此,過濾鉤子可以做一些有用的事情,比如:
- 將數據添加到數據庫或發送到瀏覽器屏幕
- 在進入瀏覽器之前處理來自數據庫的數據或在進入數據庫之前來自瀏覽器的數據。
過濾器掛鉤示例
在下面的示例中,我們將了解過濾器掛鉤如何處理內容。 在內容將被使用、放入數據庫或由 WordPress 呈現以在屏幕上查看之前觸發此鉤子。 這會在觸發過濾器掛鉤時更改數據。
add_filter函數是我們需要掛接到過濾器的函數。 這些參數可能看起來很熟悉, add_filter與add_action相同。 現在讓我們連接到 WordPress 過濾器 the_content,它在顯示任何帖子內容之前被調用。 在這個簡單的示例中,過濾器將允許我們為每個帖子添加版權說明。 此時,過濾器將對傳遞給它們的數據執行操作。
add_filter( 'the_content', 'add_copyright_notice' );
function add_copyright_notice( $content )
{
return $content . " <br>This content is copyrighted.";
}
請注意,當你使用過濾器時,你必須總是返回一些東西,否則東西會壞掉。
為主題添加鉤子
向主題添加掛鉤和過濾器時,請確保您正在使用子主題。 主要原因是如果您在父主題中工作,如果主題文件有更新,這些修改可能會被覆蓋。
希望您對鉤子有更好的理解,它們可以做什麼,以及它們如何提供幫助。 Hooks 可以很簡單,也可以很複雜,或者介於兩者之間。 一旦你掌握了基本概念,你很快就會被迷住。
