簡體   English   中英

WordPress do_action和add_action; 在add_action調用中運行參數

[英]WordPress do_action and add_action; running arguments in add_action call

我目前正在為WordPress編寫插件,但對add_actiondo_action函數感到do_action 我認為我可能會嘗試在錯誤的環境中使用它們,如果是這樣的話,有人可以向我指出正確的方向嗎?

我從討厭WordPress到熱愛它,我從沒想過要寫一個wordpress插件,但是現在我掌握了很多東西,它與普通的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代碼中? 食品法典委員會沒有對論點說什么, 那么我有什么選擇呢? 還是我的邏輯和理解有缺陷?

總體目標是什么? 目標是讓一個帶有設置參數的函數在每次調用特定的鈎子時運行,並且原始鈎子的調用不早於應調用的鈎子

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

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(請參閱下面的注釋),但是最終可能會遇到以下情況:您正在編寫模板FILE(在插件之后再在主題之后運行),並且希望將邏輯保留在插件中可以將do_action()添加到模板文件中,並且插件中設置的操作將在此時運行。 或類似地,如果您設計了一個可以在主題中修改的插件,則可以在被調用的函數中向晚期wp掛鈎添加操作,您可以在主題中為自己的自定義掛鈎和掛鈎函數調用do_action 。 大量的可能性。

無論您早早調用WP掛鈎的邏輯是什么,如果您不在WP加載模式之內, 就不要這樣做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM