个性化阅读
专注于IT技术分析

在wordpress中使用add_action传递参数!

我在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);

有关详细信息, 请参见此答案。

赞(0)
未经允许不得转载:srcmini » 在wordpress中使用add_action传递参数!

评论 抢沙发

评论前必须登录!