Réponses:
ajoutez ceci à votre thème functions.php
:
// 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' );
WP_Role
admin_init
et seulementif !$role_object->has_cap('edit_theme_options')
EDIT: mise à jour pour WP 4.9 et masquage des éléments de menu pour Editor
Si vous souhaitez que vos utilisateurs puissent modifier le menu de navigation mais pas les autres options de l’apparence: utilisez cette commande.
// 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 persistantes à la base de données.
Vous avez maintenant toutes les options sous apparence visibles pour les éditeurs. Vous pouvez masquer les autres options comme ceci:
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 hide_menu()
fonction 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 remove_submenu_page()
fonction serayiw_panel
Quand je regarde la structure du menu admin, il semble que le nav-menus.php
lien 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é d’éditer des widgets , je ne sais pas s’il s’agit d’un problème? Toutes les options de menu Ajax sont limitées par cette fonctionnalité, il est donc probable que le simple fait de modifier la fonctionnalité du menu d'administration pour l'édition des menus ne fonctionnera pas.
instal plugin "User Role Editor" - Activez edit_theme_options - installez le plugin Adminimize - désactivez les "Widgets" et "Changer de thème" pour les éditeurs;)
J'ai trouvé que votre menu fonctionnerait de cette façon: instal plugin " User Role Editor " 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. Donc, je désactivais 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! Bien pour moi, peut-être que ça vous aidera aussi