Pasando parámetros adicionales a add_filter Callable

4

Tengo una función add_filter para el gancho auth_cookie_expiration . Este gancho acepta tres parámetros. Sin embargo, estoy interesado en pasarle más parámetros. Por ejemplo:

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

Esto sería posible con apply_filter , pero la función add_filter se llama una vez, lo que hace que se genere un error:

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

Resolví esto usando cierres, pero parece una forma completamente ridícula de hacer esto:

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

¿Existe una forma adecuada / más elegante de hacer que acepte parámetros adicionales (aún mejor, los parámetros que deseo en lugar de los predeterminados)? ¿Estoy malinterpretando cómo se supone que add_filter funciona?

Por ejemplo, supongamos que get_expiration tiene este aspecto:

function get_expiration( $length, $user_id, $remember, $param1, $param2 )
{
    return $param1 + $param2;
}
    
pregunta Ynhockey 03.01.2018 - 16:34

1 respuesta

1
  

¿No entiendo bien cómo debe funcionar add_filter?

Sí, lo eres.

La función (también conocida como función de devolución de llamada), especificada por nombre, en el segundo parámetro de add_filter() , NUNCA pasa los parámetros ANY . Acepta parámetros pasados por apply_filters() . El número de estos parámetros y su significado se definen por apply_filters() . La función de devolución de llamada DEBE acepta al menos el primer parámetro, más allá del nombre del enlace. También DEBE , devolver el valor modificado (o no) para este primer parámetro.

    
respondido por el Frank P. Walentynowicz 03.01.2018 - 22:31

Lea otras preguntas en las etiquetas