Удаление пунктов меню в админке WordPress

При создании блога целесообразно запретить доступ к определенным функциям. Таким образом удастся избежать многих проблем, включая случайное удаление основной темы. Для этого необходимо внедрить код в имеющийся файл темы functions.php. Следует добавить, что такое удаление пунктов меню не запрещает прямой доступ к ним (доступ по ссылке), а всего лишь визуально убирает пункты меню:

add_action( 'admin_menu', 'remove_admin_menus' );
function remove_admin_menus(){
	global $menu;

	$unset_titles = [
		__( 'Dashboard' ),
		__( 'Posts' ),
		__( 'Media' ),
		__( 'Links' ),
		__( 'Pages' ),
		__( 'Appearance' ),
		__( 'Tools' ),
		__( 'Users' ),
		__( 'Settings' ),
		__( 'Comments' ),
		__( 'Plugins' ),
	];

	end( $menu );
	while( prev( $menu ) ){

		$value = explode( ' ', $menu[ key( $menu ) ][0] );
		$title = $value[0] ?: '';

		if( in_array( $title, $unset_titles, true ) ){
			unset( $menu[ key( $menu ) ] );
		}
	}

}

Нужно пояснить что:

  • __('Dashboard') — главная страница админки (консоль);
  • __('Posts') — пункт меню "Записи";
  • __('Media') — пункт меню "Медиафайлы" (картинки, видео и т.п.);
  • __('Links') — никому не нужный, пункт меню "Ссылки";
  • __('Pages') — пункт меню "Страницы";
  • __('Appearance') — пункт меню "Внешний вид";
  • __('Tools') — пункт меню "инструменты" — это где всякие там: "импорт", "экспорт";
  • __('Users') — пользователи;
  • __('Settings') — пункт меню "Настройки". Его очень даже можно закрыть для клиентов, а то они настроят ...;
  • __('Comments') — комментарии;
  • __('Plugins') — ну и наконец, святое: пункт меню "Плагины".

Также, существует специальная функция WP для удаления пунктов меню и подменю: remove_menu_page() и remove_submenu_page().