logo

Donner l’autorisation aux éditeurs la gestion des widget et/ou des menus [functions + PHP]

AccueilAstuces WordpressDonner l’autorisation aux éditeurs la gestion des widget et/ou des menus [functions + PHP]

Il arrive que nous ayons besoin de donner des droits sur les widgets et/ou sur les menus. Ce petit code vous permet de donner la gestion des widgets et des menus à vos éditeurs mais également à la personnalisation du thème (outils wordpress).

Il vous suffit d’effacer  les lignes que vous ne voulez pas voir sur la sidebar du backoffice. Chaque lignes efface le lien mais pas le droit (c’est peut être ce qui pourra vous bloquer dans le choix de ce « hack ») mais il y a peu de chance que vos clients essayent d’avoir plus de droits.

sur function.php

// functions widget pour éditeur
function wporg_simple_role_caps()
{
    // Choisir le rôle (ici "editor")
    $role = get_role('editor');
    // ajouter une capacité à un rôle en particulier (ici "editor")
    $role->add_cap('edit_theme_options', true);
}
add_action('init', 'wporg_simple_role_caps', 11);
function custom_admin_menu()
{
    $user = new WP_User(get_current_user_id());
    if (!empty($user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }
    if ($role === "editor") {
        remove_submenu_page('themes.php', 'themes.php');
        remove_submenu_page('themes.php', 'widgets.php');// enlever cette ligne pour donner accès aux widgets.
        remove_submenu_page('themes.php', 'nav-menus.php'); // enlever cette ligne pour donner accès aux menus.
        $customizer_url = add_query_arg('return', urlencode(remove_query_arg(wp_removable_query_args(), wp_unslash($_SERVER['REQUEST_URI']))), 'customize.php');
        remove_submenu_page('themes.php', $customizer_url); // enlever ces deux dernières lignes pour donner l'accès à personnaliser le thème (à éviter !).
    }
}
add_action('admin_menu', 'custom_admin_menu');

 

Une idée ? Partagez-la !

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *