2015-05-06 174 views
0

我目前正在爲WordPress寫一個插件,並且我很難用add_actiondo_action函數。我想我可能會試圖在錯誤的背景下使用它們,如果是這樣的話 - 是否有人能指出我正確的方向?WordPress do_action和add_action;在add_action調用運行參數

我來自討厭WordPress,喜歡它,我從來沒有想過我會寫一個wordpress插件,但現在我得到的東西的hang it,它不是正常的PHP開發不同。

無論如何,如果我有一個插件,下面的代碼:

class aCoolPlugin { 

    function __construct() { 
     add_action('clear_auth_cookie', array($this, 'aCoolFunction'), 10, 2); 
    } 

    function aCoolFunction($arg1, $arg2) { 
     // Do something with the arguments 
    } 

} 

我將如何實際運行aCoolFunction功能?現在,我已經試過如下:

do_action('init', "arg1 value", "arg2 value");

然而,之前甚至還試圖運行的代碼,我意識到:

  1. 這是沒有意義的,因爲它基本上將遠遠運行init行動太早了,
  2. 反正它不起作用!

所以,從我瞭解到:

  1. 我用add_action掛接到現有的功能WP
  2. do_action被保留用於新的掛鉤真的,真的不能相信的有用情況應該在哪裏調用一個鉤子,然後再調用?

所以,我現在的問題是:我怎麼能把我的變量傳入add_action的代碼? Codex沒有說任何關於論點,所以我有什麼選擇?還是,我的邏輯和理解是否有缺陷?

總體目標是什麼?目標是在每次調用特定掛接時運行帶有設置參數的函數,並且原始掛接不會早於/晚於應該調用

回答

0

添加操作不接受任何新變量也不會將任何變量返回給運行它的函數。但是你可以訪問傳遞給函數的變量。

function custom_function($arga){ 
     echo $arga; 
} 

add_action ('callname', 'custom_function', 10, 1);// 1= number of arguments accepted, use 2 for 2 etc...must add variables to do action call 


//sometime later in the code 
do_action('callname', $arga); 

如果你想注入變量,你必須考慮一點回到基礎。如果您想未傳遞函數內訪問變量,你有兩個選擇:

  1. 從數據庫或服務器存儲檢索它們或類似
  2. 使用全局聲明。您可以訪問運行do_action時設置的所有變量。

你很少會呼籲WordPress的鉤子do_action(見下文說明),但你可能在你的編碼模板文件(插件後再主題後運行)的情況下結束了,你要保留您可以在插件中添加do_action()到模板文件中,並且插件中設置的操作將在該點運行。或者類似的,如果你設計了一個你想在主題中修改的插件,你可以在被調用的函數中添加一個動作到一個後期的wp鉤子,你可以在你的主題中爲你的自定義鉤子和鉤子函數調用do_action 。大量的可能性。

無論您早日調用WP鉤邏輯,如果你是WP負載模式中

相關問題