web-dev-qa-db-fra.com

Wordpress Supprimer les sous-menus

J'ai trouvé une réponse à la question ici Supprimer les menus et sous-menus 2 Réponses à mon problème, mais existe-t-il un moyen de modifier un peu le code pour qu’il supprime les sous-menus de tous les rôles d’éditeur. pas seulement pour un utilisateur? et y a-t-il moyen d'améliorer ce code? J'utilise la version 3.5.1 de WordPress

code que j'utilise:

add_action('_admin_menu', 'remove_editor_submenu', 1);
function remove_editor_submenu() {
    global $current_user;
    get_currentuserinfo();
    if($current_user->user_login == 'username') {
        remove_action('admin_menu', '_add_themes_utility_last', 101);
    }
}

add_action('admin_init', 'remove_theme_submenus');
function remove_theme_submenus() {
    global $submenu, $current_user;
    get_currentuserinfo();
    if($current_user->user_login == 'username') {
        unset($submenu['themes.php'][5]);
        unset($submenu['themes.php'][7]);
        unset($submenu['themes.php'][15]);
    }
}
1
Pullapooh

Remplacez toutes les occurrences de $current_user->user_login == 'username' par in_array('editor', $current_user->roles). Et vous pouvez supprimer l'appel à get_currentuserinfo(); car les informations utilisateur sont disponibles à partir de la variable globale $current_user.

Voici un échange de code:

add_action('_admin_menu', 'remove_editor_submenu', 1);
function remove_editor_submenu() {
    global $current_user;
    if(in_array('editor', $current_user->roles)) {
        remove_action('admin_menu', '_add_themes_utility_last', 101);
    }
}

add_action('admin_init', 'remove_theme_submenus');
function remove_theme_submenus() {
    global $submenu, $current_user;
    if(in_array('editor', $current_user->roles)) {
        unset($submenu['themes.php'][5]);
        unset($submenu['themes.php'][7]);
        unset($submenu['themes.php'][15]);
    }
}
0
Michael Ecklund

Utilisez user_can .

if (user_can($current_user->ID,'editor')) { ...

Je ne sais pas laquelle des deux fonctions dans lesquelles vous souhaitez entrer mais qui devrait être simple à remplacer ou à ajouter à votre condition if existante.

Vous dites "rôles de rédacteur" - au pluriel - mais je suppose que vous voulez dire "tous les utilisateurs ayant le rôle de rédacteur".

0
s_ha_dum