Come reindirizzare gli utenti dopo l'accesso in base al loro ruolo su WordPress
2022-02-14•2 min di lettura
Se il tuo sito/progetto WordPress necessita che gli utenti vengano reindirizzati a pagine diverse dopo aver effettuato l'accesso con successo, in base ai loro ruoli, puoi utilizzare uno dei seguenti plugin:
- https://wordpress.org/plugins/role-based-redirect/
- Documentazione: https://wordpress.org/plugins/role-based-redirect/
- https://wordpress.org/plugins/peters-login-redirect/
- Documentazione: https://loginwp.com/docs/
E se si vuole mantenere basso il numero di plugin e effettuare il reindirizzamento tramite codice personalizzato?
Puoi utilizzare uno snippet come il seguente (Puoi aggiungere il codice nel file functions.php o in un plugin personalizzato esistente):
/**
* reindirizza gli utenti dopo l'accesso.
* @param $redirect_to
* @param $request
* @param $user
* @return mixed|string|void
*/
function my_site_login_redirect( $redirect_to, $request, $user ) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'administrator', $user->roles ) || in_array( 'editor', $user->roles ) ) {
$redirect_to = admin_url();
} else if ( in_array( 'customer', $user->roles ) ) {
$redirect_to = home_url( '/shop/' );
} else {
$redirect_to = home_url('/shop');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'my_site_login_redirect', 10, 3 );
Una breve spiegazione del codice
Il codice implementa il filtro login_redirect
Il codice controlla se l'utente ha il ruolo di amministratore o editor, in tal caso, l'utente viene reindirizzato alla pagina della dashboard di amministrazione, altrimenti se l'utente ha il ruolo di vip_customer, l'utente viene reindirizzato alla pagina /custom-dashboard, tutti gli altri utenti verranno reindirizzati alla pagina /shop.