function SOFT_redirect(){
    global $current_user,$pagenow;
if ($pagenow == 'index.php') { 
                if (in_array('subscriber', $current_user->roles)) {
                    wp_redirect( admin_url('profile.php') );
                } elseif (in_array('custom_role', $current_user->roles)) {
                    wp_redirect( admin_url('edit.php?post_type=my_CPT') );
                }
                exit();
            }
}
add_action('admin_init','SOFT_redirect');

La funzione wp_redirect( $location, [$status =302] ) consente di redirigere verso uno specifico url specificando eventualmente un codice header di stato ( default 302: moved temporarily.

Nell’esempio di cui sopra, la funzione esclude la vista della dashboard dell’area admin per determinati ruoli utente: in particolare un utente con ruolo ‘custom_role’ viene reindirizzato all’elenco di post_type “my_CPT” mentre i “subscribers” vengono reindirizzati alla propria pagina di profilo.
Importante usare exit(); al termine della funzione