J'ai donc trouvé des extraits utiles pour supprimer les éléments du menu administrateur. Cependant, j'ai des problèmes avec les éléments de sous-menu. Je souhaite conserver le menu de présentation, mais me débarrasser des thèmes, des widgets et de l'éditeur.
function remove_menus()
{
global $menu;
global $current_user;
get_currentuserinfo();
if($current_user->user_login == 'username')
{
$restricted = array(__('Posts'),
__('Links'),
__('Comments'),
__('Plugins'),
__('Users'),
__('Tools'),
__('Settings')
);
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted))
{unset($menu[key($menu)]);}
}// end while
}// end if
}
add_action('admin_menu', 'remove_menus');
function remove_submenus()
{
global $menu;
global $current_user;
get_currentuserinfo();
if($current_user->user_login == 'username')
{
global $submenu;
unset($submenu['themes.php'][10]); // remove the theme editor
}
}
add_action('admin_menu', 'remove_menus');
Essaye ça:
add_action('_admin_menu', 'remove_editor_submenu', 1);
function remove_editor_submenu() {
remove_action('admin_menu', '_add_themes_utility_last', 101);
}
add_action('admin_init', 'remove_theme_submenus');
function remove_theme_submenus() {
global $submenu;
unset($submenu['themes.php'][5]);
unset($submenu['themes.php'][7]);
unset($submenu['themes.php'][15]);
}
Pour désactiver d'autres noms de sous-menu, allez à ./wp-admin/menu.php et recherchez le ou les éléments à désactiver.
EDIT: En ce qui concerne la désactivation par nom d’utilisateur, j’aimerais plutôt ajouter une nouvelle fonctionnalité à un rôle et l’utiliser comme condition de suppression voir ici . Sinon, utilisez ce que vous utilisiez déjà, comme ceci:
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]);
}
}
Il existe des fonctions beaucoup plus simples pour supprimer des pages de menu et de sous-menu depuis la version 3.1:
remove_menu_page () et remove_submenu_page ()
cependant, le problème avec la suppression de thèmes est que le menu de présentation IS la page des thèmes.
EDITER - ce que vous pouvez faire est de supprimer tout le menu d’apparence, puis de créer un nouvel élément de menu de niveau supérieur avec add_menu_page ()
function wpse31255_add_menu_page(){
add_menu_page( __('Nav Menus', 'mav-menus'), __('Nav Menus', 'nav-menus'), 'edit_themes', 'nav-menus.php', '', 99 );
}
add_action('admin_menu', 'wpse31255_add_menu_page');