2015-10-05 57 views
2

鉤住wordpress核心的自定義鉤子是否會被wordpress自動執行,還是我們必須自己調用定製鉤子上的do_action函數?wordpress:行爲如何執行?

例子:

add_action("action_one","some_process",10); 
add_action("action_one","some_different_process",11); 

function some_process(){ //... } 
function some_different_process(){ //... } 

do_action("action_one"); 

是否some_process得到執行,然後再some_different_process被當do_action("action_one")被調用後執行?

回答

1

如果創建存在於您的自定義主題或插件內的自定義操作掛鉤,那麼,你必須通過do_action在適當的位置打電話給他們,你希望他們被觸發。

WordPress不會自動查找動作鉤子並觸發它們。它具有一些內置的鉤子,您可以通過它們來鎖定以運行自定義代碼,但是如果您創建了自己的鉤子,則還需要設置相應的do_action呼叫才能運行它們。

要回答你關於some_processsome_different_process的執行順序等問題,some_processsome_different_process因爲它有一個低優先級號之前運行。

如果你想要一個行動提前運行,給它一個像1或5這樣的低數字,如果你不關心它在哪裏運行或者希望它最後運行,我通常使用更高的數字,如100或1000 。如果兩個鉤子被定義爲具有相同的優先級,通常先登記的鉤子將優先於另一個優先級。

+0

最佳答案!我可以告訴你對wordpress和smart很有經驗。 TY。 – dave

1

如果操作被調用,所有掛鉤到某個操作上的函數都會自動執行,但如果該操作未觸發,則不會調用它們。

例如,如果您有:如果action_one觸發

add_action("action_one","some_function",10); 

然後some_function將被調用。如果action_one從不觸發,則不調用some_function。

do_action是一種手動觸發動作的機制,但請記住它會觸發任何鉤子進入該動作,而不僅僅是你的動作(除非你設置了一些過濾器)。


又如:假設您設置的自定義功能,對行動save_post運行:

add_action('save_post', 'top_secret_function'); 

,則每次保存後您的top_secret_function運行。

如果你想手動觸發save_post(沒有實際保存後),你可以這樣做:

do_action('save_post'); 

,它會觸發您top_secret_function,但這通常不被推薦,因爲它也同樣會觸發任何其他掛鉤到save_post(許多插件和核心文件都可以)的函數。

You can setup custom actions使用add_actiondo_action的組合。

+0

所以在一般的行動是指wordpress觸發,而不是程序員正確? – dave

+0

既不?這一切都取決於你勾選的動作,你的功能,它的使用方式等等。你可以使用組合設置自定義動作:http://relearningtheweb.blogspot.com/2012/12/wordpress-create-custom -action-hook-in.html – themerlinproject

+0

但我認爲你正在獲得這個概念 - 如果你勾選了一個wordpress動作,那麼當動作被調用時,wordpress將最終調用你的函數。如果需要,您可以使用do_action手動調用該操作。 – themerlinproject