web-dev-qa-db-fra.com

Connectez-vous par programme à un utilisateur wordpress

J'essaye de me connecter par programme à un utilisateur de wordpress, en utilisant la fonction suivante pour cela.

    public function auto_login( $user ) {
        $username = $user;
            if ( !is_user_logged_in() ) {
            $user = get_user_by( 'login', $username );
                wp_set_current_user( $user->ID, $user->user_login );
                wp_set_auth_cookie( $user->ID );
                do_action( 'wp_login', $user->user_login );
            }     
}

Malheureusement, cela ne semble pas fonctionner. Cette fonction est appelée depuis un shortcode. Serait-ce l'explication? Devrais-je plutôt relier ma fonction à un filtre avant qu'un contenu ne soit généré? Aussi, je voudrais rediriger l'utilisateur nouvellement connecté vers un message spécifique basé sur un paramètre $ _GET, puis-je simplement ajouter une redirection d'en-tête à la fin de la fonction?

Merci d'avance pour votre aide !

2
user54952

Faites ceci sur le hook template_redirect. Vous pouvez utiliser wp_safe_redirect pour rediriger des pages différentes du blog. Je ne peux pas vous donner le code parce que je ne sais pas d'où vous obtenez l'utilisateur $

1
sabarnix

Vous pouvez essayer cette fonction car elle fonctionne pour moi

function custom_login() {
    $creds = array();
    $creds['user_login'] = 'example';
    $creds['user_password'] = 'plaintextpw';
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) )
        echo $user->get_error_message();
}
// run it before the headers and cookies are sent
add_action( 'after_setup_theme', 'custom_login' );

Pour plus de détails s'il vous plaît visitez le site officiel ici

4
TBI Infotech