web-dev-qa-db-fra.com

permettre aux éditeurs de modifier les menus?

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?

45
Mild Fuzz

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' );
50
user3474

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

18
Jules

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' );
}
12
BenFreke

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;)

4
user4657

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.

3
Jan Fabry

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

0
janoo