web-dev-qa-db-fra.com

Comment pourrais-je me connecter à `clear_auth_cookie` pour renvoyer l'ID utilisateur actuellement déconnecté?

clear_auth_cookie est ce dont j'avais besoin pour intercepter l'action de déconnexion, mais je ne peux pas le faire retourner.

https://core.trac.wordpress.org/browser/tags/4.9/src/wp-includes/pluggable.php#L940

Selon le Codex, il ne donne aucune information.

Idéalement j'aimerais faire:

add_action( 'clear_auth_cookie', 'return_user_data_on_logout');

function return_user_data_on_logout( $user ) {
    $id = $user->ID; //Assuming it returns a WP_User object.
    //Do some logic here, mostly to check if the user if is of certain type     / 
    has certain meta attached to them.
}

Des idées?

1
coolpasta

Cette action ne transmet pas ces données:

function return_user_data_on_logout( $user ) {

Ici, $user sera toujours indéfini. De plus, vous devez indiquer à add_action le nombre de paramètres requis par la fonction.

Mais..

do_action( 'clear_auth_cookie' );

Aucune information n'est transmise pour commencer, ce n'est pas comme ça que cet événement/cette action fonctionne.

Alors, comment pouvons-nous déconnecter l'utilisateur actuel? La réponse est que nous supprimons les mots "se déconnecter" de cette question, ce qui nous donne une question beaucoup plus facile et beaucoup plus interrogeable:

Comment obtenons-nous l'utilisateur actuel?

$user = wp_get_current_user();

Il est possible que ce crochet soit trop tôt et qu’il ne soit pas non plus le meilleur.

Par exemple, wp_logout est un crochet bien meilleur à utiliser, comme il est indiqué sur l'étain, ce qu'il fait

Alors:

add_action( 'wp_logout', function() {
    $user = wp_get_current_user();
    // ...
});
1
Tom J Nowell