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;
}
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.