permet aux éditeurs de modifier les menus?

43

J'aimerais pouvoir donner à mes rédacteurs le pouvoir de modifier le menu, est-ce possible?

L'onglet Apparence ne semble pas être une option du tout. Puis-je le faire?

    
posée Mild Fuzz 17.11.2010 - 13:42
la source

6 réponses

47

ajoutez ceci au functions.php de votre thème:

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );
    
réponse donnée user3474 24.02.2011 - 14:11
la source
16

EDIT: mise à jour pour WP 4.9 & masquer les éléments de menu pour l'éditeur

Si vous souhaitez que vos utilisateurs puissent modifier le menu de navigation, mais pas les autres options de l'apparence: utilisez ceci

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

Vous pouvez commenter tout le code après avoir actualisé votre panneau d'administration, car le code ci-dessus apportera des modifications permanentes à la base de données.

Vous avez maintenant toutes les options sous apparence visibles pour les éditeurs. Vous pouvez masquer les autres options comme suit:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

Les 3 dernières lignes de la fonction hide_menu() sont spécifiques à mon thème. Vous pouvez trouver le deuxième paramètre en cliquant sur le sous-menu que vous souhaitez masquer, dans le panneau d'administration. Votre URL sera alors quelque chose comme: example.com/wp-admin/themes.php?page=yiw_panel

Ainsi, dans cet exemple, le deuxième paramètre de la fonction remove_submenu_page() sera yiw_panel

    
réponse donnée Jules 16.04.2013 - 16:51
la source
11

Dans WordPress 3.8, ce serait un meilleur code que la réponse acceptée actuellement.

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}
    
réponse donnée BenFreke 09.01.2014 - 08:39
la source
4

plugin instal "Editeur de rôle utilisateur" - Activez edit_theme_options - plugin d'installation Adminimize - désactivez les "Widgets" et "Changer de thème" pour les éditeurs;)

    
réponse donnée user4657 14.04.2011 - 09:51
la source
3

Quand je regarde la structure du menu administrateur, il semble que le% Le liennav-menus.php est lié à la capacité edit_theme_options . Pouvez-vous modifier le rôle d'éditeur pour inclure cette fonctionnalité? Cela leur donnerait également la possibilité de modifier les widgets . Je ne sais pas si c'est un problème? Toutes les options de menu Ajax sont limitées par cette fonctionnalité. Il ne sera donc probablement pas efficace de modifier la fonctionnalité du menu d'administration pour l'édition des menus.

    
réponse donnée Jan Fabry 17.11.2010 - 14:26
la source
0

J'ai constaté que votre menu fonctionnerait de cette façon: plugin instal " Editeur de rôle d'utilisateur "et là vous pouvez éditer la condition pour le rôle d'éditeur et autre aussi. Activez edit_theme_options. Mais maintenant: vous verrez l'option "menu" sous "thèmes", "widgets". Pour moi: après avoir cliqué sur "menu" (en tant qu'éditeur), je ne voyais pas les options remplies mais vide. Je désactivais donc le plug-in "Editeur de rôle utilisateur" et les options remplies pour "menu" apparaissent correctement. Notez que la désactivation du plug-in "User Role Editor" reste une condition active pour l'éditeur! Bon pour moi, peut-être que ça vous aidera aussi

    
réponse donnée janoo 05.01.2011 - 13:54
la source

Lire d'autres questions sur les étiquettes