Comment puis-je autoriser le rôle d'éditeur à modifier les paramètres du thème?

22

Je viens de créer un nouveau blog pour un ami et j'ai pensé qu'il valait mieux ne pas lui donner immédiatement un accès administrateur par mesure de précaution.

J'ai donc créé un nouvel utilisateur en tant qu'éditeur.

Mais j'ai vu que cet utilisateur ne peut pas modifier les paramètres du thème comme l'arrière-plan et l'en-tête.

Existe-t-il un moyen simple d'autoriser le rôle Éditeur à modifier les paramètres de thème dans Twenty Ten ou un de ses enfants? Il devrait essentiellement être capable de faire tout ce qu'un administrateur peut faire reg. le thème, probablement même en changeant de thème.

hakre
la source
2
Ça me rappelle… J'ai écrit un plugin pour ça: Options de thème pour les éditeurs
fuxia

Réponses:

21

vous pouvez ajouter des capacités au rôle d'éditeur à l'aide de l'objet de rôle et add_cap de vous functions.php

<?php
   // get the the role object
   $editor = get_role('editor');
   // add $cap capability to this role object
   $editor->add_cap('edit_theme_options');
?>

vous pouvez également supprimer des fonctionnalités:

$editor->remove_cap('delete_posts'); 

jetez un œil à la liste des capacités et à ce que chacune d'elles signifie.

Bainternet
la source
3
Cool, ça a marché! Pour les shorties: get_role('editor')->add_cap('edit_theme_options');:)
hakre
1
@hakre FYI Les affectations de variables directes comme celle- a()->b()ci ne fonctionneront pas dans les versions PHP antérieures à 5.
hitautodestruct
Comme les rôles sont généralement stockés dans la base de données, la mise à jour des rôles doit être effectuée dans un plugin et là dans un crochet d'activation / désactivation. Il n'est tout simplement pas nécessaire d'exécuter ce code sur chaque processus WordPress.
David
6

Puisque c'est le 1er hit sur google pour cette question, je pense que c'est le bon endroit pour une mise à jour:

Pour moi, je ne pouvais pas le faire fonctionner via edit_theme_options. Ensuite, j'ai lu la source du plugin et j'ai découvert que c'était en fait manage_options. Et ça a marché.

tl; dr:

$role_object = get_role( 'editor' );
$role_object->add_cap( 'manage_options' );

travaille pour moi (en 2014)

Sebastian Schmid
la source
Great stuffs mec ...
Abbas
Nécessaire pour ajouter une ligne de plus pour WP> 4.0$role_object->add_cap('customize');
Alex
1

Un autre excellent plugin est User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/). Il est similaire aux membres, mais beaucoup plus basique et simple à utiliser. De plus, les développeurs sont toujours là pour écouter les commentaires et offrir de l'aide, si nécessaire.

Travis Pflanz
la source
0

Ceci est ancien, mais voici une nouvelle façon d'y parvenir:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
Bryan Willis
la source