web-dev-qa-db-fra.com

Masquer les menus d'administration par rôle dans Wordpress

J'essaie de cacher une certaine quantité de menus pour un client. En ce moment, j'utilise le code suivant et il fait bien son travail, mais il le supprime pour tout le monde, autant que je sache. Comme dans tous les rôles.

function remove_menus () {
global $menu;
    $restricted = array(__('Dashboard'), __('Media'), __('Links'),      __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Profile'),__('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');

Quelle est la ligne que je voudrais utiliser pour avoir cet appel sur seulement un éditeur ou un auteur, etc.?

Merci beaucoup

2
user3218

vous pouvez le faire, cela masque le menu (c'est tout, ils peuvent toujours aller à l'URL du menu s'ils le savent), en fonction des possibilités. Vous pouvez facilement le changer pour un rôle ou même un nom d'utilisateur.

Je pense que le rôle d'utilisateur est "user_role" et pour le nom d'utilisateur, c'est "user_login". L'exemple ci-dessous utilise "user_level" sur 10, ce qui signifie tout le monde sauf l'administrateur.

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

    if($current_user->user_level < 10)
    {
        $restricted = array(__('Pages'),
                            __('Media'),
                            __('Links'),
                            __('Custom Post Name'),
                            __('Comments'),
                            __('Appearance'),
                            __('Plugins'),
                            __('Users'),
                            __('Tools'),
                            __('Settings'),
                            __('Posts'),

        );
        end ($menu);
        while (prev($menu)){
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }// end while

    }// end if
}
add_action('admin_menu', 'remove_menus');
4
Wyck

Utilisez la fonction current_user_can() pour construire ce tableau $restricted en plusieurs morceaux avant de le transmettre à travers cette boucle non définie. Pour que cela fonctionne, vous devrez utiliser des fonctionnalités et non des noms de rôle.

2
Jason Rhodes

Si cela ne vous dérange pas d'utiliser un plugin au lieu d'un code en dur, essayez d'utiliser:

http://wordpress.org/extend/plugins/adminimize/

Je l’utilise pour tous les sites que je crée pour personnaliser ce que les différents rôles voient, cela vous donne beaucoup d’options et pas seulement dans les menus.

1
Tafts