我认为你走的是正确的道路,但我认为func_get_args()
只会给您传递给该函数的参数。这就是我过去一直使用它的方式。
我采取了另一种我认为可能有效的方法。我发现debug_backtrace()
有助于调试之前的操作和筛选器。它返回给您的数组中的第四个元素是do\\u action调用,其中包含您希望进行的调用中的所有参数。
以下是我编写的一段代码,以及我测试的几个操作:
<?php
// Here are the Actions I tested against.
$events = array(
\'profile_personal_options\',
\'profile_update\',
\'show_user_profile\',
\'show_user_profile\'
);
foreach ($events as $event) {
add_action($event, function($args = null) {
$backtrace = debug_backtrace();
// This element is going to be the do_action call
echo \'<pre>\';
print_r($backtrace[3][\'function\']);
echo \'</pre>\';
$action_arguments = $backtrace[3][\'args\'];
// The first element of this is going to be the $event
array_shift($action_arguments);
// Leaving you with the rest of the parameters available to that action
echo \'<pre>\';
print_r($action_arguments);
echo \'</pre>\';
}, 100);
}
如果这不是你想要的,或者我走了。。。让我知道,我很乐意记下我的答案!!