Permitir somente administradores e editores acessarem o wp-admin

4

Estou tentando restringir o acesso ao wp-admin para que apenas administradores e editores sejam permitidos. No momento estou usando esta função:

function restrict_admin(){
    //if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Mas isso faz o trabalho apenas para o administrador; os editores não estão autorizados a acessar esta parte do site. O que posso fazer?

    
por shea 09.05.2013 / 14:47

3 respostas

3

Você está correto em verificar a capacidade de um recurso. No entanto, as opções de gerenciamento são fornecidas apenas aos administradores por padrão. Você deve verificar um recurso que editores e administradores tenham, como delete_others_posts.

function restrict_admin(){
//if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'delete_others_posts' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Veja papéis e capacidades do códice.

    
por Andrew Bartel 09.05.2013 / 22:21
0

Você também pode usar isso:

<?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?> 
    // stuff here for admins or editors
<?php } ?>

Para referência detalhada, verifique este outro thread na pilha .

Obrigado

    
por Vee 15.07.2015 / 13:47
0

Para mim, uma vez que por Codex, passar nomes de função para current_user_can () é desencorajado, pois não é garantido que ele funcione corretamente (consulte # 22624 ), a melhor opção é algo assim.

$user = wp_get_current_user();
$allowed_roles = array('administrator','editor');

if(array_intersect($allowed_roles, $user->roles)){
    //user have $allowed_roles
}
    
por mokiSRB 21.05.2017 / 14:06