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, puis-je le faire?
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' );
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 fonction hide_menu()
correspondent à un thème spécifique pour 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
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' );
}
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;)
Quand je regarde la structure du menu administrateur, il semble que le lien nav-menus.php
soit lié à la capacité edit_theme_options
. Pouvez-vous modifier le rôle d'éditeur pour inclure cette fonctionnalité? Ce serait aussi leur donner 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.
J'ai trouvé que votre menu fonctionnerait de cette façon: plug-in d'installation " Editeur de rôle d'utilisateur " et vous pourrez ainsi éditer la condition du rôle de rédacteur en chef et autre. 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. J'ai donc désactivé le plug-in "Editeur de rôle d'utilisateur" et les options remplies pour "menu" apparaissent correctement. Notez que la désactivation du plug-in "User Role Editor" reste une condition pour l'éditeur actif! Bien pour moi, peut-être que ça vous aidera aussi