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.]
$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 .