因为 WP 不接受闭包作为回调(至少,肯定不是 for add_filter()
),所以简短的回答是“你不能”。至少,不是以整洁的方式。
这里有几个选项,具体取决于您在做什么。第一个是最好的,但你可能无法使用它:
编写一个调用您的函数的包装函数:
function gr_wp_list_pages_excludes_1 ($exclude_array) {
$custom_arg = 'whatever';
gr_wp_list_pages_excludes_1($exclude_array, $custom_arg)
}
这仅在您始终在给定情况下传递相同的自定义参数时才有效 - 您将为每种不同的情况编写这些包装器函数之一,并将包装器函数的名称传递给add_filter()
. 或者,如果您希望它真正具有动态性,则需要...
使用全局变量:(参考:变量范围, )$GLOBALS
function gr_wp_list_pages_excludes($exclude_array) {
global $gr_wp_list_pages_excludes_custom_arg;
$id_array=$array('22');
$exclude_array=array_merge($id_array, $exclude_array);
return $exclude_array;
}
使用这种方法意味着您可以通过$gr_wp_list_pages_excludes_custom_arg
在全局范围内分配您喜欢的任何数据将其传递到函数中。这通常被认为是不好的做法,并且非常不受欢迎,因为它会产生混乱和不可读的代码,并使内存空间充满额外的变量。请注意,我已将变量名称设置为非常长且特定于函数以避免冲突 - 使用全局变量的另一个问题。虽然这会起作用,但只有在绝对必要时才使用它。