WordPress – Eseguire un auto login passandogli il valore di un determinato utente (Risolto)

News Programmazione Wordpress
0

Oggi per un mio progetto avevo la necessità di eseguire un auto-login passando a wordpress il valore di un determinato utente.
Ecco il codice php per eseguire l’autologin.

function programmatic_login( $username ) {
if ( is_user_logged_in() ) {
wp_logout();
}
add_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );   
$user = wp_signon( array( 'user_login' => $username ) );
remove_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );
if ( is_a( $user, 'WP_User' ) ) {
wp_set_current_user( $user->ID, $user->user_login );
if ( is_user_logged_in() ) {
return true;
}
}
return false;
}
function allow_programmatic_login( $user, $username, $password ) {
return get_user_by( 'login', $username );
}

In alternativa ho trovato anche un secondo frammento di codice per effettuare il login che funziona correttamente, passando solo l’ID dell’utente

clean_user_cache($user->ID);
wp_clear_auth_cookie();
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID, true, false);
update_user_caches($user);

Oppure un’ultima variante

clean_user_cache($user->ID);
wp_clear_auth_cookie();
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id, true, true );
update_user_caches( $user );
if ( is_user_logged_in() ) {UPDATE
$redirect_to = $_SERVER['REQUEST_URI'];
header("location:".$redirect_to );
die(); 

UPDATE: ecco un altro snippet che puoi inserire nel file functions.php per eseguire l’autologin su una determinata pagina per un determinato utente

function auto_login() {
// @TODO: change these 2 items
$loginpageid   = '1234'; //ID della pagina di login
$loginusername = 'demo'; //username dell'utente da loggare
// get this username's ID
$user = get_user_by( 'login', $loginusername );
if (
! is_page( $loginpageid )
|| ! $user instanceof WP_User
) {
return;
}
$user_id = $user->ID;
// login as this user
wp_set_current_user( $user_id, $loginusername );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $loginusername, $user );
// redirect to home page after logging in (i.e. don't show content of www.site.com/?p=1234 )
wp_redirect( home_url() );
exit;
}
add_action( 'wp', 'auto_login', 1 );
}
Facebook Comments
0

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Related Posts