Accorder à l'éditeur un accès à la barre latérale

15

Je veux donner au rôle de l'éditeur l'accès à l'édition de la barre latérale et de son contenu. J'ai un widget de texte là-dedans et afin de modifier ce widget de texte, l'utilisateur doit être un administrateur - cela craint. Comment puis-je accorder l'autorisation au rôle Éditeur qui lui donnera accès pour modifier la barre latérale?

Howdy_McGee
la source
Cela peut être lié: wordpress.stackexchange.com/questions/13413/…
Elliott
Cela semble être un peu ce que je recherche, mais je ne comprends pas le code. Il semble qu'il crée un nouvel utilisateur et attribue des rôles au lieu de modifier un utilisateur existant
Howdy_McGee

Réponses:

21

La edit_theme_optionscapacité doit permettre à l'utilisateur de modifier la barre latérale comme décrit sur cette page: http://codex.wordpress.org/Appearance_Widgets_SubPanel

Code à ajouter functions.php

   $role = get_role('editor'); 
   $role->add_cap('edit_theme_options');

Éditer:

Cela devrait fonctionner pour empêcher l'éditeur d'accéder aux thèmes ou aux menus

function custom_admin_menu() {

    $user = new WP_User(get_current_user_id());     
    if (!empty( $user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }

    if($role == "editor") { 
       remove_submenu_page( 'themes.php', 'themes.php' );
       remove_submenu_page( 'themes.php', 'nav-menus.php' ); 
    }       
}

add_action('admin_menu', 'custom_admin_menu');

Je n'ai pas eu l'occasion de tester cela, mais cela ne les supprime que du menu, ils peuvent toujours y accéder en tapant directement l'URL.

Elliott
la source
Cela fonctionne comme un charme, mais comment puis-je les empêcher d'accéder au menu ou aux thèmes?
Howdy_McGee
Voir ma réponse modifiée.
Elliott
Erreur fatale: appel à une fonction non définie remove_menu_page () - De plus, je ne m'inquiète pas qu'ils le saisissent par URL, je doute vraiment que quelqu'un soit aussi malveillant et même si ce ne sont que des thèmes et des menus. Et je ne peux pas assez attribuer +1 à votre message! Merci!
Howdy_McGee
Désolé, un mauvais code a été ajouté, remove_submenu_pagemême si vous ne devriez toujours pas avoir l'erreur fatale. J'ai édité ma réponse et testé et tout fonctionne bien pour moi?
Elliott
1
Oh, ce serait la raison pour laquelle il n'était pris en charge que depuis la version 3.1.0, je n'ai eu aucun bogue depuis la mise à niveau ... Je suggère toujours de passer à la dernière version pour aider à la sécuriser.
Elliott
1

Si vous voulez simplement configurer cela aussi facilement que possible, utilisez le plugin Members. La capacité que vous devrez ajouter est «edit_theme_options». Sachez que cela accordera plus que la zone des widgets, cela permet également à l'éditeur d'accéder à l'ensemble du menu Apparence. Vois ici

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

Si vous voulez le faire par programme, vous devrez utiliser add_cap ().

$editor = get_role('editor');
$editor->add_cap('edit_theme_options');

Vous pouvez jeter ce code dans son propre plugin, et c'est fait. Ou mettez-le dans functions.php .

eddiemoya
la source
Et si quelqu'un utilise l'éditeur de rôles utilisateur assez populaire, vous pouvez également sélectionner "Modifier les options de thème" / "modifier_options_de_thème".