web-dev-qa-db-ger.com

Übergabe zusätzlicher Parameter an add_filter Callable

Ich habe eine add_filter Funktion für den auth_cookie_expiration Hook. Dieser Hook akzeptiert drei Parameter. Ich bin jedoch daran interessiert, mehr Parameter zu übergeben. Zum Beispiel:

add_filter( 'auth_cookie_expiration', 'get_expiration', 10, 5 );

Dies wäre mit apply_filter möglich, aber die Funktion add_filter wird einmal aufgerufen, wodurch ein Fehler ausgegeben wird:

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function get_expiration(), 3 passed in ... and exactly 5 expected

Ich bin damit umgegangen, indem ich Verschlüsse verwendet habe, aber es scheint eine völlig lächerliche Methode zu sein, dies zu tun:

add_filter( 'auth_cookie_expiration', function() use ($param1, $param2) { return get_expiration(null, null, null, $param1, $param2); } , 10, 3 );

Gibt es eine angemessene/elegantere Möglichkeit, zusätzliche Parameter zu akzeptieren (noch besser, die gewünschten Parameter anstelle der Standardparameter)? Verstehe ich falsch, wie add_filter funktionieren soll?

Nehmen wir zum Beispiel an, get_expiration sieht folgendermaßen aus:

function get_expiration( $length, $user_id, $remember, $param1, $param2 )
{
    return $param1 + $param2;
}
4
Ynhockey

Verstehe ich falsch, wie add_filter funktionieren soll?

Ja, das bist Du.

Die Funktion (auch als Rückruffunktion bezeichnet), die durch den Namen im zweiten Parameter von add_filter() angegeben wird,NEVERübergibtANYparameters. Es akzeptiert die von apply_filters() übergebenen Parameter. Die Anzahl dieser Parameter und ihre Bedeutung wird durch apply_filters() definiert. Die RückruffunktionMUSSmindestens den ersten Parameter hinter dem Hook-Namen akzeptieren. EsMUSSauch einen geänderten (oder nicht geänderten) Wert für diesen ersten Parameter zurückgeben.