Comment utiliser current_user_can ()?

4

Parce que ça ne marche pas pour moi. Ce code vérifie si un utilisateur vient de s'inscrire. Je veux le rediriger vers une page personnalisée si c'est le cas. Sinon, redirigez-le vers la page d'accueil ou la page d'administration.

function mylogin_redirect($redirect_to, $url_redirect_to = '', $user = null) {
    if( $user->ID ) {
        $user_info = get_userdata( $user->ID ); 
        // If user_registered date/time is less than 48hrs from now
        // Message will show for 48hrs after registration
        if ( strtotime( $user_info->user_registered ) > ( time() - 172800 ) ) {
            return get_bloginfo('url') . "/custompage/";
        } elseif( current_user_can( 'manage_options' )) {
            return admin_url();
        } else {
            return get_bloginfo('url');
        }
    }
}
add_filter('login_redirect', 'mylogin_redirect');

J'obtiens les résultats attendus pour les deux options mais pour l'administrateur. elseif( current_user_can( 'manage_options' )) { return admin_url(); } ne semble pas avoir été analysé.

    
posée Joann 24.11.2010 - 18:04

1 réponse

6

Probablement parce que le $current_user global n'est pas encore valide, il est utilisé par current_user_can() .

Cependant, vous pouvez utiliser ceci à la place;

if ($user->has_cap('manage_options')) { return admin_url(); }
    
réponse donnée TheDeadMedic 24.11.2010 - 18:26

Lire d'autres questions sur les étiquettes