Удаление меню и подменю

Поэтому я нашел несколько полезных фрагментов, чтобы помочь удалить пункты меню администратора. Однако у меня возникают проблемы с элементами подменю. Я хочу сохранить меню внешнего вида, но избавлюсь от Темы, Виджеты и Редактор.

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

Solutions Collecting From Web of "Удаление меню и подменю"

Попробуй это:

 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]); } с 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]); } с 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]); } с 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]); } 

Чтобы отключить другие имена подменю, перейдите в ./wp-admin/menu.php и выполните поиск элементов, которые вы хотите отключить.

EDIT. Что касается отключения по имени пользователя, я бы вместо этого добавил новую функцию к роли и использовал ее в качестве условия удаления здесь . В противном случае просто используйте то, что вы уже использовали, например:

 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]); } } с 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]); } } с 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]); } } с 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]); } } 

Есть гораздо более простые функции для удаления страниц меню и подменю с 3.1:

remove_menu_page () и remove_submenu_page ()

однако проблема с удалением тем заключается в том, что меню внешнего вида является страницей тем.

EDIT – что вы можете сделать, это удалить все меню внешнего вида, а затем создать новый элемент верхнего уровня с помощью 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');