我正在使用apply\\u过滤器来弥补插件之间的差距,但我正在努力解决这些问题。有一个参数,一个数组,有几个add\\u filter实现来匹配apply\\u filters,每个实现都传递原始数组并添加到其中。
似乎可以从apply\\u filter传递多个参数,但add\\u filter只能返回一个参数,这是否正确,或者如何处理add\\u filter调用之间的多个参数?
我需要传递帐户ID的第二个参数,但根据优先级,似乎只有第一个add\\u过滤器才能使用该参数。我计划将这两个参数包装到一个数组中并传递它,这样一个数组的第一个值是一个数组,第二个参数是一个用户ID。
Edited to add example
$error = apply_filters(\'check_for_more_errors\', $userid, $error);
add_filter(\'check_for_more_errors\', \'error_check_1\', 1, 2);
function error_check($userid, $error){
$error[] = get_user_meta($userid, \'Plugin 1 user error\', true);
return $error;
}
add_filter(\'check_for_more_errors\', \'error_check_2\', 2, 2);
// $userid below is actually $error returned from error_check_1
function error_check_2($userid, $error){
$error[] = get_user_meta($userid, \'Plugin 2 user error\', true);
return $error;
}
上述情况并没有如我所期望或需要的那样起作用。过滤器似乎是菊花链,第一个过滤器的返回参数作为参数传递给下一个过滤器。
我希望得到$id变量和$error变量,如示例中所示。
最合适的回答,由SO网友:Ismail 整理而成
apply_filters
要求您在此函数的第二个参数中传递要过滤的值(在挂钩标记名称之后)
$error = apply_filters(\'check_for_more_errors\', $error, $userid);
add_filter(\'check_for_more_errors\', \'error_check_1\', 1, 2);
function error_check_1($error, $userid){
$error[] = get_user_meta($userid, \'Plugin 1 user error\', true);
return $error;
}
add_filter(\'check_for_more_errors\', \'error_check_2\', 2, 2);
function error_check_2($error, $userid){
$error[] = get_user_meta($userid, \'Plugin 2 user error\', true);
return $error;
}