要想爲所欲爲的給主題添加功能,wordpress的鉤子和過濾器應該要能明白。wordpress鉤子和過濾器也是插件開發的基本知識。 php
咱們經過實例來說解wordpress鉤子,在第一節基礎教程中咱們說到,要給主題的頭部文件加上wp_head();函數,不然有的插件將不能正常工做,該函數位於wp-includes/general-template.php文件的1577行,原函數以下: css
可一看到這個函數調用了do_action函數,傳入參數"wp_head",有興趣的看官能夠繼續追溯一下do_action函數,該函數位於wp-includes/plugin.php文件。不過這個函數就比較複雜了,這裏就不講解了,只須要明白會用就好。 wordpress
咱們這樣解釋do_action函數:do_action執行一個「動做」,這個動做名稱就是這個參數"wp_head",這個wp_head動做是不須要定義的,do_action還有定義的功能,也就是先前不須要定義這個wp_head是什麼、要幹嗎,而do_action就定義了一個名叫wp_head的動做,並執行它。 函數
可是光有一個空名稱不行啊,不如你說咱們do_action('飯前'),固然這裏的參數是假想的,確定不能用中文嘛,飯前具體幹嗎呢? spa
因此咱們還須要一個函數:add_action(),add_action跟do_action位於同一個文件中。 插件
add_action()函數能夠給「動做」添加具體事務,好比前面咱們已經定義並執行了一個動做「飯前」,而後咱們add_action('飯前','洗手'),就給這個「飯前」動做添加了具體內容,在程序中來說,「洗手」這個參數應該是個函數名稱,也就是執行這個函數。 教程
因此咱們do_action裏面的動做叫作動做鉤子(hook),鉤子能夠掛東西,因此add_action就是往這個鉤子上掛函數,而後執行那個鉤子的時候,也就是執行全部掛在這個鉤子上的函數。 事務
函數: 開發
注意了:咱們看到do_action函數和add_action函數還有一個參數,咱們將在實例中講解參數的應用。 rem
先看簡單示例一,咱們經過wp_head()函數來往wp頭部輸出一個meta信息:
咱們只須要往wp_head動做上添加一個函數,輸出meta信息便可,上面的函數添加在哪裏呢?主題的functions.php,或者其它主題被包含的函數文件,好吧,只要主題會執行的地方。
這個應用很簡單,不少插件就是這樣工做的,像這樣來輸出css或js代碼。
示例二:
此次咱們要經過鉤子來傳遞參數了,do_action('hookname',$arg_1,$arg_2,$arg_3)除了鉤子名外,還要帶3個參數,而後add_action()中,除了鉤子名,函數名,優先級,剩下那個就是參數的個數了,也就是掛靠的這個函數須要多少個參數,do_action傳了3個參數,那麼對應的add_action的accepted_args能夠爲0、一、二、3。少接受能夠,可是多了就木有了。
例如:
能夠看到定義並執行了一個叫「ashu」的動做鉤子,而且傳3個參數給動做函數,而後使用add_action,往這個鉤子上掛了2個函數,function1函數須要2個參數,function2須要3個參數,因此使用add_action的時候後面對應的參數個數也是2和3。而後優先級分別是10和1,因此function2先執行。
我想到了這裏,動做的使用已經很清楚了。然而關於動做鉤子(hook)的函數不單單隻有這兩個,還有has_action() do_action_ref_array() remove_action() remove_all_action()....要想再深刻了解,能夠看官網了。