因为WP不接受闭包作为回调函数(至少,对于
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
,将任何喜欢的数据传递到函数中。这通常被认为是不好的做法并且受到强烈反对,因为它会导致代码混乱和难以阅读,并且会在内存空间中留下额外的变量。请注意,我将变量名称设置得非常长并特定于该函数,以避免冲突 - 这是使用全局变量时的另一个问题。虽然这样做能够实现目标,但只有在绝对必要时才使用该方法。