Solo permita que los administradores y editores accedan a wp-admin

4

Estoy intentando restringir el acceso a wp-admin para que solo se permitan administradores y editores. En este momento estoy usando esta función:

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

Pero esto hace el trabajo solo para el administrador; Los editores no pueden acceder a esta parte del sitio. ¿Qué puedo hacer?

    
pregunta shea 09.05.2013 - 14:47

3 respuestas

3

Tienes razón en que deberías estar comprobando una capacidad. Sin embargo, las opciones de administración solo se dan a los administradores de forma predeterminada. Debería verificar la capacidad que tienen tanto los editores como los administradores, 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 );

Consulte roles y capacidades del códice.

    
respondido por el Andrew Bartel 09.05.2013 - 22:21
0

También puedes usar esto:

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

Para obtener una referencia detallada, consulte este otro hilo en la pila .

Gracias

    
respondido por el Vee 15.07.2015 - 13:47
0

Para mí, dado que no se garantiza que esto funcione correctamente (ver no se garantiza el paso de Codex Passing a current_user_can ()) # 22624 ), la mejor opción es algo como esto.

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

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

Lea otras preguntas en las etiquetas