我在wordpress开发中遇到一个非常奇怪的问题,
在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将参数传递给函数?
#1
在” my_function”(尽管是你自己的:)中, 编写以下行:
print_r(debug_backtrace());
http://php.net/manual/en/function.debug-backtrace.php
它将帮助你了解发生了什么。
或者, 你可以使用XDebug(在开发服务器上)。
#2
好吧, 首先, 在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');
#3
你是否尝试过将函数放在add_action之前?
#4
使用这样的匿名函数:
function my_function($arg) {
echo "the var is: $arg<br>";
}
$arg = "HELP ME";
add_action('admin_menu', function() { global $arg; my_function($arg); }, 10);
有关详细信息, 请参见此答案。
评论前必须登录!
注册