J'ai une fonction add_filter
pour le hook auth_cookie_expiration
. Ce hook accepte trois paramètres. Cependant, je suis intéressant de lui transmettre plus de paramètres. Par exemple:
add_filter( 'auth_cookie_expiration', 'get_expiration', 10, 5 );
Cela serait possible avec apply_filter
, mais la fonction add_filter
est appelée une fois, ce qui la renvoie une erreur:
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function get_expiration(), 3 passed in ... and exactly 5 expected
J'ai contourné cela en utilisant des fermetures, mais cela semble être une façon complètement ridicule de faire cela:
add_filter( 'auth_cookie_expiration', function() use ($param1, $param2) { return get_expiration(null, null, null, $param1, $param2); } , 10, 3 );
Existe-t-il un moyen approprié/plus élégant de le faire accepter des paramètres supplémentaires (encore mieux, les paramètres que je veux remplacer par ceux par défaut)? Est-ce que je comprends mal comment add_filter
est censé fonctionner?
Par exemple, supposons que get_expiration
ressemble à ceci:
function get_expiration( $length, $user_id, $remember, $param1, $param2 )
{
return $param1 + $param2;
}
Est-ce que je comprends mal comment add_filter est censé fonctionner?
Oui, vous l'êtes.
La fonction (appelée aussi fonction de rappel), spécifiée par nom, dans le deuxième paramètre de add_filter()
,NEVERpasseAUCUNparamètres. Il accepte les paramètres passés par apply_filters()
. Le nombre de ces paramètres et leur signification sont définis par apply_filters()
. La fonction de rappelDOIT/ accepter au moins le premier paramètre, passé le nom du hook. IlDOIT, également, renvoyer une valeur modifiée (ou non) pour ce premier paramètre.