web-dev-qa-db-fra.com

Passage de paramètres supplémentaires à add_filter Callable

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;
}
4
Ynhockey

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.

1