Como usar current_user_can ()?

4

Porque não está funcionando para mim. Este código verifica se um usuário acabou de se registrar. Eu quero redirecioná-lo para uma página personalizada em caso afirmativo. Caso contrário, redirecione-o para a página inicial ou a página de administração.

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');

Eu obtenho os resultados esperados para as duas opções, mas o admin. elseif( current_user_can( 'manage_options' )) { return admin_url(); } não parece ser analisado.

    
por Joann 24.11.2010 / 18:04

1 resposta

6

Provavelmente porque o% global$current_user ainda não é válido, o que é usado por current_user_can() .

No entanto, você pode usar isso em vez disso;

if ($user->has_cap('manage_options')) { return admin_url(); }
    
por TheDeadMedic 24.11.2010 / 18:26

Tags