¿Cómo agregar otro usuario a esta función remove_menu?

2

Bastante autoexplicativo. ¿Cómo se agrega a otro usuario a esta función para functions.php, es decir, usuario2, a quién se le mostrarán elementos de menú diferentes a usuario1?

Intenté agregar otra condición if($current_user->user_login == 'user2') , pero no tuve suerte. User2 tendrá diferentes derechos de administrador, si eso importa. Pero, básicamente, necesito poder mostrar un conjunto de elementos de menú para usuario1 y otro conjunto para usuario2, por lo que necesito averiguar alguna lógica. Pero lo intenté y recibí un error "no se puede volver a declarar un error declarado previamente" para la función de menú.

  function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == 'user1')
    {
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Profile'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
        }
}

add_action('admin_menu', 'remove_menus');
    
pregunta markratledge 10.04.2011 - 18:02

5 respuestas

2

¿Por qué no simplemente agregar otro si?

function remove_menus(){
    global $menu;
    global $current_user;
    get_currentuserinfo();
   //check first user
    if($current_user->user_login == 'user1'){
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Profile'),
                            __('Tools'),
                            __('Settings')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
    }
    //check second user
    if($current_user->user_login == 'user2'){
        $restricted = array(
                            __('Links'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
    }

}

add_action('admin_menu', 'remove_menus');

misma función pero dos usuarios diferentes obtendrán diferentes menús.

    
respondido por el Bainternet 29.04.2011 - 02:43
2

¿No puedes simplemente agregar un or a tu lógica condicional?

if( $current_user->user_login == 'user1' || $current_user->user_login == 'user2' )

O incluso mejor, solo usa una matriz, para que sea más fácil de actualizar ...

Antes de la línea if mencionada anteriormente ..

$_menu_remove_users = array( 'user1', 'user2' ); 

Luego reemplace la condición if existente con ..

if( in_array( $current_user->user_login, $_menu_remove_users ) )

Luego puedes actualizar la matriz según sea necesario sin necesidad de volver a escribir tu lógica condicional.

    
respondido por el t31os 11.04.2011 - 17:32
2

Aquí está un pequeño complemento que escribí - que funciona & es probado

Puede simplemente cargarlo y probarlo usando la siguiente función dentro de su archivo functions.php :

Cómo hacer

# Add a user to a user group from inside your functions.php file
function test_me( $user_group_A )
{
    $user_group_A[] = 'Take your own name for testing';

    return $user_group_A;
}
add_filter( 'user_group_A', 'test_me' );

Notas

Agregar uno (o más) usuarios a uno de los grupos es tan fácil como se muestra arriba. Modificar los grupos de elementos del menú es casi lo mismo. Simplemente maneja esos arreglos dentro de las funciones de tus temas.

    
respondido por el kaiser 26.04.2011 - 17:44
1

Parece que intenta ocultar ciertos elementos del menú para ciertos usuarios, puede hacerlo haciendo uso de Roles and Capabilities de nombres de usuario de codificación dura y eliminación de elementos de menú. El complemento Capsman te permite establecer permisos flexibles para administradores, roles de editor e incluso definir otros nuevos. Si un usuario no tiene permisos para ver la página de Configuración, WordPress eliminará los enlaces de administración.

    
respondido por el Tom 26.04.2011 - 08:49
0

También puede utilizar el Adminimize del complemento, con este complemento puede ocultar fácilmente los menús para diferentes roles; También roles personalizados. quizás sea más fácil como código personalizado, si te gusta esto.

    
respondido por el bueltge 30.04.2011 - 23:04

Lea otras preguntas en las etiquetas