I’m using apply_filters to bridge the gap between plugins but am struggling with the arguments. There is one argument, an array, there are several implementations of add_filter to match apply_filters and each of them pass down the original array and add to it.
Seems that you can pass several arguments from apply_filter but add_filter can only return one argument, is this correct or how do you handle multiple arguments between add_filter calls?
I need to pass a second argument of an account ID, but it seems that by priority only the first add_filter gets to work with that argument. I plan to wrap up both arguments into a single array and pass that, so an array with an array as its first value and a user ID as its second argument.
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;
}
The above does not work as I expect or need. The filters seem to daisy chain with one the returning argument of the first one being passed as the argument to the next one.
I want both to get the $id variable and for the $error variable to be augmented as in the example.