J'essaie de placer un groupe de codes simple pour rediriger les "abonnés" uniquement, vers la page d'accueil (ou une page souhaitée) après la connexion. Je pensais utiliser if( current_user_can('read') ):
, mais il s’agit d’une fonctionnalité globale qui sera également applicable à tous les autres rôles. J'ai donc essayé get_role('subscriber')
. Voici mes codes functions.php
(grâce à Len ):
function subscriber_redirection() {
global $redirect_to;
if( get_role('subscriber') ) {
if ( !isset( $_GET['redirect_to'] ) ) {
$redirect_to = get_option('siteurl');
}
}
}
Mais cela redirige aussi les administrateurs!
get_role
ne fait que renvoyer des informations sur le rôle. Cela ne vous dira pas si l'utilisateur actuel a ce rôle. Utilisez wp_get_current_user
avec une coche semblable à ceci:
function subscriber_redirection() {
global $redirect_to;
$user = wp_get_current_user();
if (in_array('subscriber',$user->roles)) {
// user has subscriber role
if ( !isset( $_GET['redirect_to'] ) ) {
$redirect_to = get_option('siteurl');
}
}
}
Je ne sais pas pourquoi vous utilisez global $redirect_to;
mais ne faites jamais rien avec la variable.
'get_role' retourne un objet, pas un booléen: http://codex.wordpress.org/Function_Reference/get_role
// for example: if the user can not moderate comments
if (!current_user_can('moderate_comments') ) {
//redirect
}
Vous pouvez trouver toutes les fonctionnalités ici: http://codex.wordpress.org/Roles_and_Capabilities