web-dev-qa-db-fra.com

Est-il possible d'intégrer un nom d'utilisateur dans une redirection de connexion?

J'utilise WP pour travailler en tant que système de gestion de contenu pour un site Web qui sera fourni aux utilisateurs d'un certain nombre de produits différents. J'ai réussi à créer une fonction qui redirige les utilisateurs en fonction de leur rôle:

add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
function my_login_redirect( $redirect_to, $request, $user ) {
if ( is_array( $user->roles ) ) {
    if ( in_array( 'administrator', $user->roles ) )
        return home_url( '/wp-admin/' );
    elseif ( in_array( 'editor', $user->roles ) )
        return home_url( '/wp-admin/' );
    elseif ( in_array( 'subscriber', $user->roles ) )
        return home_url();
    elseif ( in_array( 'map_user', $user->roles ) )
        return home_url( '/mapping/' );
    elseif ( in_array( 'news_subscriber', $user->roles ) )
        return home_url( '/category/newsletter/' );
    else
        return home_url();
}

Certains utilisateurs doivent être redirigés vers une page spécifique qui partage leur nom d'utilisateur.

Comment puis-je récupérer le nom d'utilisateur et l'intégrer dans leur redirection? Alors:

...
elseif ( in_array( 'map_user', $user->roles ) )
    return home_url( '/mapping/[username-based-page-goes-here]/' );
...

[Je connais le plug-in de redirection de Peter, je préfère utiliser les fonctions principales de Wordpress pour ne pas avoir à personnaliser manuellement l'accès de chaque utilisateur lors de la création. Je me sers également d’autres plugins qui semblent en conflit avec celui de Peter.]

1
shngrdnr

$user->data devrait avoir ce que vous voulez.

// snip
elseif ( in_array( 'map_user', $user->roles ) )
    return home_url( "/mapping/{$user->data->user_login}/" );
// end snip

Ajoutez if (!is_wp_error($user)) wp_die(var_dump($user)); en haut de votre fonction pour voir ce avec quoi vous devez travailler. Attention: Ceci cassera les choses. (Il jette également un avis) C’est uniquement pour le débogage .

1
s_ha_dum