2011-04-27 58 views
0

我有我的wordpress發展的一個非常奇怪的問題,在wordpress中使用add_action傳遞參數!

在fucntions.php

我有以下代碼

//mytheme/functions.php 
$arg = "HELP ME"; 
add_action('admin_menu', 'my_function', 10, 1); 
do_action('admin_menu',$arg); 

function my_function($arg) 
{ 
    echo "the var is:".$arg."<br>"; 
} 

輸出

the var is:HELP ME 
the var is: 

爲什麼功能重複2次?爲什麼「幫助我」的論點被正確地傳遞並且第二次沒有通過?

我一直在盡全力爲期2天,並在很多地方搜索以找到解決方案,但我沒有運氣。

我想要做的事情很簡單!我只想使用add_action將參數傳遞給函數?

+0

add_action? do_action?它是什麼? – 2011-04-27 07:29:12

+0

@OZ_:這些是一些WordPress預定義函數,請參閱http://codex.wordpress.org/Function_Reference/add_action,謝謝 – ahmed 2011-04-27 09:31:55

回答

0

首先,在你的my_function()函數中,你不是,它定義了 $ arg。你試圖迴應那些不存在的東西 - 所以當它返回時,它是空的。所以你需要定義它。 (編輯補充:你試圖定義它的功能之外 - 反而使承認它,你必須全球化參數的函數類型。)

function my_function($arg) { 
    if(!$arg) $arg = 'some value'; 
    echo "the var is:".$arg."<br>"; 
} 

當你ADD_ACTION,你需要定義$ arg值:

add_action('admin_menu', 'my_function', 10, 'my value'); 
0

您是否試圖在add_action之前放置函數?

0

可以使用匿名函數是這樣的:

function my_function($arg) { 
    echo "the var is: $arg<br>"; 
} 
$arg = "HELP ME"; 
add_action('admin_menu', function() { global $arg; my_function($arg); }, 10); 

詳見this answer