Je voudrais forcer un utilisateur à une page spécifique lors de la connexion en fonction de leur rôle en utilisant
if ( current_user_can('contributor') )
et la fonction de connexion principale
function wp_loginout($redirect = '', $echo = true) {
if ( ! is_user_logged_in() )
$link = '<a href="' . esc_url( wp_login_url(get_permalink()) ) . '">' . __('Log in') . '</a>';
else
$link = '<a href="' . esc_url( wp_logout_url(get_permalink()) ) . '">' . __('Log out of account') . '</a>';
if ( $echo )
echo apply_filters('loginout', $link);
else
return apply_filters('loginout', $link);
}
J'ai essayé un certain nombre de combinaisons et semble échouer. Toute aide serait appréciée.
filtre login_redirect
:
function my_login_redirect_contributors() {
if ( current_user_can('contributor') ){
return 'url-to-redirect-to';
}
}
add_filter('login_redirect', 'my_login_redirect_contributors');
J'espère que cette question date d'un an et peut aider certaines personnes.
J'ai rencontré un cas où la réponse acceptée ne fonctionnait pas car le $current_user
global était un objet WP_User
mais avait des valeurs nulles. Le code suivant est ce que j'ai trouvé pour fonctionner. Notez l'utilisation du 3ème paramètre $user
:
function 22352_login_redirect( $redirect_url, $POST_redirect_url, $user ) {
if ( is_a( $user, 'WP_User' ) && $user->has_cap( 'manage_options' ) ) {
$redirect_url = 'url-to-redirect-to';
}
return $redirect_url;
}
add_filter( 'login_redirect', array( $this, 'wpse22352_login_redirect' ), 10, 3 );