Passando Parâmetros Adicionais para add_filter Callable

4

Eu tenho uma função add_filter para o auth_cookie_expiration hook. Este gancho aceita três parâmetros. No entanto, eu sou interessante em passar mais parâmetros. Por exemplo:

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

Isso seria possível com apply_filter , mas a função add_filter é chamada uma vez, o que gera um erro:

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

Eu passei por isso usando closures, mas parece uma maneira completamente ridícula de fazer isso:

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

Existe uma maneira adequada / mais elegante de aceitar parâmetros adicionais (melhor ainda, os parâmetros que eu quero no lugar dos padrões)? Eu estou entendendo mal como o add_filter deve funcionar?

Por exemplo, suponha que get_expiration tenha esta aparência:

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

1 resposta

1
  

Estou entendendo mal como o add_filter deve funcionar?

Sim, você é.

A função (função de retorno de chamada), especificada pelo nome, no segundo parâmetro de add_filter() , NUNCA transmite os parâmetros ANY . Aceita parâmetros passados por apply_filters() . O número desses parâmetros e seu significado é definido por apply_filters() . A função de retorno de chamada DEVE aceitar pelo menos o primeiro parâmetro, além do nome do gancho. DEVE , também, retornar o valor modificado (ou não) para este primeiro parâmetro.

    
por Frank P. Walentynowicz 03.01.2018 / 22:31