搜尋
首頁CMS教程&#&按揭開WordPress掛鉤系統的神秘面紗

Demystifying the WordPress Hook System

WordPress Hook 系統詳解:Actions、Filters 和 Hooks

WordPress 利用事件驅動架構模式,核心組件、主題和插件通過 Hooks(鉤子)在執行或 PHP 解釋的不同階段觸發事件。 Hooks 主要分為 Actions 和 Filters 兩種:Actions 用於在流程執行的不同階段添加或移除功能;Filters 用於修改各種功能和實現的行為。

WordPress 的 Hook 系統增強了平台的可擴展性,允許在核心代碼、插件和主題中添加、移除和修改功能,開發者無需修改核心源代碼即可擴展插件和主題。

Hook 系統在 WordPress 執行的不同階段觸發,通常使用 do_actions()apply_filters() PHP 函數。可以通過 add_action()add_filter() 來訂閱或掛載這些事件。本文將通過示例演示 Actions 和 Filters 的使用方法。

Hooks、Actions 和 Filters 的含義

Hooks 指的是 WordPress 核心、主題和插件在 PHP 執行或解釋的不同階段觸發的事件。觸發這些事件時,所有掛載到這些事件上的函數和/或類方法將按正確的順序執行。

Actions 和 Filters 是兩種 Hooks:Actions 用於在流程執行的不同階段添加或移除功能;Filters 用於修改各種功能和實現的行為。

WordPress Hook 系統的重要性

WordPress Hook 系統的重要性在於其可擴展性。它允許添加和移除功能,以及調整/修改 WordPress 核心、插件和主題中功能的實現。

編寫可擴展的插件和主題,使其他開發者能夠改進和擴展它們,而無需編輯核心源代碼。

Demystifying the WordPress Hook System 例如,我的 2Checkout WooCommerce 支付網關插件不包含在結賬頁面上顯示受支持信用卡類型的圖標,因為我認為這是不必要的。但是,我添加了一個過濾器,以防用戶有不同的需求。

我們收到了一個客戶的支持請求,要求包含該圖標。我們能夠為客戶提供一個代碼片段,該片段掛接到過濾器並包含該圖標。

深入探討 WordPress Hook 系統

在 WordPress 執行的不同階段,會觸發大量事件,通常使用 do_actions()apply_filters() PHP 函數。可以通過 add_action()add_filter() 來訂閱或掛載這些事件。

以下是一個插件中 Action 的示例。此 Action 在我的 ProfilePress 用戶註冊插件中成功註冊用戶後觸發:

/**
 * Fires after a user registration is completed.
 *
 * @param int $form_id ID of the registration form.
 * @param mixed $user_data array of registered user info.
 * @param int $user_id ID of the registered user.
 */
do_action( 'pp_after_registration', $form_id, $user_data, $user_id );

在 WordPress 執行期間,將處理掛接到此 Action 的所有函數。

WordPress 核心中的 the_content 是一個過濾器 Hook 的示例,它會過濾每個帖子的內容:

/**
 * Fires after a user registration is completed.
 *
 * @param int $form_id ID of the registration form.
 * @param mixed $user_data array of registered user info.
 * @param int $user_id ID of the registered user.
 */
do_action( 'pp_after_registration', $form_id, $user_data, $user_id );

注意:

do_actions() 中,第一個參數是 Action Hook 的名稱,後續參數是可用於掛接到 Action 的函數的變量。

apply_filters() 中,第一個參數是過濾器 Hook 的名稱,第二個參數是函數掛接到過濾器上進行修改或應用的數據或值。後續參數是可用於掛接到過濾器的函數的變量/值。

Action Hook 示例

示例 #1:

使用 ProfilePress 插件的 pp_after_registration Action,假設我們想要實現一個功能,用戶在註冊後會立即收到歡迎短信(通過假設的短信服務 Dolio)。我們的函數 Hook 可以是這樣的:

    /**
     * Filter the post content.
     *
     * @since 0.71
     *
     * @param string $content Content of the current post.
     */
    $content = apply_filters( 'the_content', $content );

add_action 的第三個參數是 Hook 優先級,它指定掛接到 pp_after_registration Action 的函數的執行順序。留空將默認為 10。第四個參數指定函數 Hook 將接受的參數數量。留空將默認為 1。

示例 #2:

WordPress 包含以下 Action Hooks:wp_headwp_footer,它們分別在前端的 head 標籤和 body 標籤結束之前觸發。

這些 Hooks 可用於在這些戰略位置顯示腳本和數據。

(以下內容與原文類似,為了避免重複,此處省略Action Hook和Filter Hook的剩餘示例及結論部分)

(FAQs部分也因篇幅原因省略)

以上是揭開WordPress掛鉤系統的神秘面紗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
WordPress適合創建投資組合網站嗎?WordPress適合創建投資組合網站嗎?Apr 26, 2025 am 12:05 AM

是的,wordpressisisexcellentforcortingaportfoliowebsite.1)itoffersnumeroversnumeroverportfolio-spificthemeslike'astra'astra'astra'astra'astra'astra'astra'astra'astra'elementor'Enelementor'enableIntiviveSiveSign,Thoughtemanycanslowthesite.3)

使用WordPress而不是從頭開始編碼網站的優點是什麼?使用WordPress而不是從頭開始編碼網站的優點是什麼?Apr 25, 2025 am 12:16 AM

WordPressisadvantageousovercodingawebsitefromscratchdueto:1)easeofuseandfasterdevelopment,2)flexibilityandscalability,3)strongcommunitysupport,4)built-inSEOandmarketingtools,5)cost-effectiveness,and6)regularsecurityupdates.Thesefeaturesallowforquicke

是什麼使WordPress成為內容管理系統?是什麼使WordPress成為內容管理系統?Apr 24, 2025 pm 05:25 PM

WordPressIsAcmsDuetoItseAsofuse,自定義,USERMANAMECTION,SEO和COMMUNITYSUPPORT.1)ITSIMPLIFIESCONTENTMANGAMEWITHANINTUISIDERFEEFFECE.2)提供extentensiveCustomizationThroughThroughTheMesandPlugins.3)supportrobustuserrolesandplugins.4)supportrobustuserrolesandpermissions.4)增強

wordpress怎麼加評論框wordpress怎麼加評論框Apr 20, 2025 pm 12:15 PM

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

wordpress怎麼複製子站wordpress怎麼複製子站Apr 20, 2025 pm 12:12 PM

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

wordpress怎麼寫頁頭wordpress怎麼寫頁頭Apr 20, 2025 pm 12:09 PM

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

wordpress評論怎麼顯示wordpress評論怎麼顯示Apr 20, 2025 pm 12:06 PM

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

wordpress怎麼上傳源碼wordpress怎麼上傳源碼Apr 20, 2025 pm 12:03 PM

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中