web-dev-qa-db-fra.com

Configuration de l'expiration du cookie d'authentification WordPress

J'essaie de configurer le délai d'expiration du cookie WordPress, mais pour une raison quelconque, cela ne fonctionne pas. Je suis allé ici:

https://developer.wordpress.org/reference/hooks/auth_cookie_expiration/

Et mettez le crochet suivant basé sur la doc:

function init() {
    // ...
    $expiration = 60;
    apply_filters( 'auth_cookie_expiration', $expiration );
}

Ce code est appelé depuis un hook du constructeur de mon plugin:

add_action( 'init', array( $this, 'init' ) );

Et j'ai vérifié qu'il fonctionne.

Je m'attendais à ce que cela produise un cookie qui expire dans 60 secondes, mais ce n'est pas le cas. Au lieu de cela, il définit un délai d'expiration normal de 48 heures (valeur par défaut de WP). Je suppose que cela pourrait être dû au fait que lorsque l'utilisateur se connecte réellement, il ne crée pas cette date d'expiration et l'exécution de cette fonction ultérieurement n'a aucun effet. Je n'ai pas encore compris comment le faire fonctionner bien. Toute aide appréciée.

1
Ynhockey

Notez que vous n’ajoutez aucun rappel de filtre avec:

apply_filters( 'auth_cookie_expiration', $expiration );

Utilisez plutôt:

add_filter( 'auth_cookie_expiration', $callback, 10, 3 );

$callback est le rappel de filtre approprié qui modifie l'expiration.

Voici un exemple

add_filter( 'auth_cookie_expiration', function( $length, $user_id, $remember ) {
    return $length; // adjust this to your needs.
}, 10, 3 );

ou pour s'adapter à votre configuration de classe actuelle:

add_filter( 'auth_cookie_expiration', [ $this, 'set_auth_cookie_expiration' ], 10, 3 );

set_auth_cookie_expiration() est la méthode appropriée, par exemple:

public function set_auth_cookie_expiration ( $length, $user_id, $remember ) 
{
    return $length; // adjust this to your needs.
}
1
birgire