WordPress 開發必學!WordPress 裡的 hook (鉤子) 是什麼?有哪一些常用的 Hook?

簡單來說,Actions 用於在特定時間點執行代碼,Filters 用於修改數據。在 WordPress 開發中,hooks 是非常強大且靈活的工具,讓開發者能夠輕鬆地擴展和定制 WordPress。

在 WordPress 中,"hook" 是一種讓開發者在不修改核心代碼的情況下,擴展或自定義 WordPress 功能的機制。

除此之外,許多外掛也會提供各種 Hooks 讓開發者有機會可以去客製化一些外掛的行為。

WordPress Hooks 有哪一些類型?

Hook 有兩種類型:Actions 和 Filters。

Actions(動作):Actions 是 WordPress 執行特定事件時觸發的 hook。這些事件可能包括 WordPress 初始化、文章發布、用戶登錄等。通過註冊一個 action hook,開發者可以在這些事件發生時運行自己的代碼。這使得開發者能夠插入自己的功能,而不必直接改動 WordPress 核心文件。例如,你可以在文章發布時發送一封郵件通知。

Filters(過濾器):Filters 是用來修改 WordPress 執行過程中數據的 hook。通過註冊一個 filter hook,開發者可以攔截、修改,然後返回這些數據。這樣可以自定義數據的輸入和輸出,比如修改文章內容、標題、網址等。

一個沒有安裝任何外掛的 WordPress 在瀏覽首頁時會執行哪一些 Hook?

在沒有安裝任何外掛的 WordPress 網站上,當訪問首頁時,會執行一系列的 hooks。這些 hooks 是 WordPress 核心提供的,負責處理和呈現頁面。以下是首頁加載過程中一些主要的 hooks(包括 actions 和 filters):

1. 初始化和設置

  • muplugins_loaded: 在所有的 "Must Use" 插件加載完成後觸發。
  • plugins_loaded: 在所有的插件(包括 "Must Use" 插件和普通插件)加載完成後觸發。
  • setup_theme: 在主題加載之前觸發。
  • after_setup_theme: 在主題加載之後立即觸發。通常用於主題的初始化。

2. 請求處理

  • init: 在 WordPress 完成初始設置後觸發,適合用於初始化操作。
  • wp_loaded: 在 WordPress 完全加載完畢後觸發,適合在 WordPress 環境完全準備好後執行代碼。

3. 查詢和模板設置

  • template_redirect: 在決定使用哪個模板文件來呈現頁面之前觸發,通常用於重定向操作。
  • get_header: 在載入 header.php 模板文件之前觸發。
  • wp_head: 在 head 部分結束前觸發,允許插入額外的 HTML 或執行其他操作。

4. 主內容處理

  • loop_start: 在主循環(main loop)開始前觸發,通常用於在文章列表開始之前執行一些代碼。
  • the_post: 在每個文章開始渲染前觸發,通常用於修改文章數據。
  • loop_end: 在主循環(main loop)結束後觸發。

5. 頁腳處理

  • get_footer: 在載入 footer.php 模板文件之前觸發。
  • wp_footer: 在頁面結束前( 標籤前)觸發,允許插入 JavaScript 等腳本。

6. 錯誤處理和日誌

  • shutdown: 在頁面執行完成,發送回應之前觸發。通常用於記錄或清理工作。

這些只是加載首頁時 WordPress 可能執行的 hooks 中的一部分。實際上,WordPress 核心有數百個 hooks 分布在各種操作和處理過程中。這些 hooks 提供了一個靈活的方式讓開發者可以在不同的階段掛載自定義功能。