Torna al blog

Come reindirizzare gli utenti dopo l'accesso in base al loro ruolo su WordPress

2022-02-142 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:

  1. https://wordpress.org/plugins/role-based-redirect/
    1. Documentazione: https://wordpress.org/plugins/role-based-redirect/
  2. https://wordpress.org/plugins/peters-login-redirect/
    1. 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.