这里有一个简单的例子来解释我的问题。3个函数连接到myaction中。每个参数都有不同数量的arg,arg可以是数字数组中的一个数。因此,参数也可以是不同的数据类型。
add_action(\'myaction\', \'my_multiplication\', 20, 3);
add_action(\'myaction\', \'my_addition\', 30, 1);
add_action(\'myaction\', \'my_division\', 50, 2);
function my_addition ($a = array()) {
$sum = 0;
echo \'\';
foreach ($a as $i => $val) {
$sum += $val;
echo ($i ? \' + \' : \'\') . $val;
}
echo \' = \' . $sum . \'
\';
}
function my_multiplication ($a, $b, $c) {
echo \'\' . $a . \' * \' . $b . \' * \' . $c . \' = \' . ($a * $b * $c) . \'
\';
}
function my_division ($a, $b) {
echo \'\' . $a . \' / \' . $b . \' = \' . ($a / $b) . \'
\';
}
如何调用do\\u action来运行3挂钩函数?这是我尝试的,但没有成功。我想要2,3,4作为乘法,数组(11,22,33)作为加法,60,20作为除法。
do_action(\'myaction\', 2, 3, 4, array(11, 22, 33), 60, 20);
Update我想知道传递参数是否可以更具体,如下所示:
do_action(
\'myaction\',
array(
\'my_multiplication\' => array(2, 3, 4),
\'my_addition\' => array(array(11, 22, 33)),
\'my_division\' => array(60, 20)
)
);
最合适的回答,由SO网友:Jacob Peattie 整理而成
传递给的所有其他参数do_action()
作为参数按顺序传递给任何挂钩回调函数。回调函数只能通过设置$accepted_args
parameter of add_action()
. 他们无法选择要接受的参数。
所以你需要这样做:
add_action(\'myaction\', \'my_multiplication\', 20, 3); // Accept the first 3 arguments.
add_action(\'myaction\', \'my_addition\', 30, 4); // Accept the first 4 arguments.
add_action(\'myaction\', \'my_division\', 50, 6); // Accept the first 6 arguments.
function my_multiplication ($a, $b, $c) {
echo \'\' . $a . \' * \' . $b . \' * \' . $c . \' = \' . ($a * $b * $c) . \'\';
}
function my_addition ($a, $b, $c, $d = array()) {
$sum = 0;
echo \'\';
foreach ($d as $i => $val) {
$sum += $val;
echo ($i ? \' + \' : \'\') . $val;
}
echo \' = \' . $sum . \'\';
}
function my_division ($a, $b, $c, $d = array(), $e, $f) {
echo \'\' . $e . \' / \' . $f . \' = \' . ($e / $f) . \'\';
}
注意如何
my_addition()
需要接受至少4个参数才能访问
$d
, 其中包含数组
my_division()
需要接受所有6个参数才能获取
$e
和
$f
, 最后两个数字。