In this short tutorial, we’ll show you ways to add various menus to the WordPress admin dashboard.

Add menu item hook 
This code snippet will add a menu menu item to the left side of the wordpress admin dashboard using the method

add_menu_page
add_menu_page.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public static function admin_menu() {
add_menu_page(__('Menu 1','menu-test'), __('Menu 1','menu-test'), '', 'mt-top-level-handle','menu title', plugins_url( 'Menu/favicon.png' ), null);
}
public static function admin_menu() { add_menu_page(__('Menu 1','menu-test'), __('Menu 1','menu-test'), '', 'mt-top-level-handle','menu title', plugins_url( 'Menu/favicon.png' ), null); }
public static function admin_menu() {
   add_menu_page(__('Menu 1','menu-test'), __('Menu 1','menu-test'), '', 'mt-top-level-handle','menu title', plugins_url( 'Menu/favicon.png' ), null);      
 }

Adding menus with submenus which hovers out
The code below will create a submenu attached to the main menu which hovers out on mouseover. Using the

add_submenu_page()
add_submenu_page() method.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
add_submenu_page('mt-top-level-handle', __('menu 2','menu-test'), __('menu 2','menu-test'), 'manage_options', 'menu_2', array ( __CLASS__, 'menu_2' ));
add_submenu_page('mt-top-level-handle', __('menu 2','menu-test'), __('menu 2','menu-test'), 'manage_options', 'menu_2', array ( __CLASS__, 'menu_2' ));
add_submenu_page('mt-top-level-handle', __('menu 2','menu-test'), __('menu 2','menu-test'), 'manage_options', 'menu_2',  array ( __CLASS__, 'menu_2' ));

Removing Admin Menu item
These methods will remove items from the menu. Using the

remove_submenu_page()
remove_submenu_page() method.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
remove_menu_page(string $menu_slug);
remove_submenu_page( 'themes.php', 'widgets.php' );
remove_menu_page(string $menu_slug); remove_submenu_page( 'themes.php', 'widgets.php' );
remove_menu_page(string $menu_slug);

remove_submenu_page( 'themes.php', 'widgets.php' );

Wrapping the menu system into its own method and invoke with wordpress hooks
The code below, will organise the menu system into its own method and using

add_action()
add_action()

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
add_action( 'admin_init', array( 'Admin', 'admin_init' ) );
add_action( 'admin_menu', array( 'Admin', 'admin_menu' ), 5 );
/**
* Create the Menu System
*/
public static function admin_menu() {
add_menu_page(__('Admin','menu-test'), __('Admin','menu-test'), '', 'mt-top-level-handle','statistics', plugins_url( 'Admin/favicon.png' ), null);
add_submenu_page('mt-top-level-handle', __('Admin Summary','menu-test'), __('Visitor Summary','menu-test'), 'manage_options', 'Admin_stats', array ( __CLASS__, 'Admin_stats' ));
add_submenu_page('mt-top-level-handle', __('Admin Configuration','menu-test'), __('Configuration','menu-test'), 'manage_options', 'Admin_configuration', array ( __CLASS__, 'Admin_configuration' ));
add_submenu_page('mt-top-level-handle', __('Admin FAQ','menu-test'), __('FAQ','menu-test'), 'manage_options', 'Admin_faq', array ( __CLASS__, 'Admin_faq' ));
}
add_action( 'admin_init', array( 'Admin', 'admin_init' ) ); add_action( 'admin_menu', array( 'Admin', 'admin_menu' ), 5 ); /** * Create the Menu System */ public static function admin_menu() { add_menu_page(__('Admin','menu-test'), __('Admin','menu-test'), '', 'mt-top-level-handle','statistics', plugins_url( 'Admin/favicon.png' ), null); add_submenu_page('mt-top-level-handle', __('Admin Summary','menu-test'), __('Visitor Summary','menu-test'), 'manage_options', 'Admin_stats', array ( __CLASS__, 'Admin_stats' )); add_submenu_page('mt-top-level-handle', __('Admin Configuration','menu-test'), __('Configuration','menu-test'), 'manage_options', 'Admin_configuration', array ( __CLASS__, 'Admin_configuration' )); add_submenu_page('mt-top-level-handle', __('Admin FAQ','menu-test'), __('FAQ','menu-test'), 'manage_options', 'Admin_faq', array ( __CLASS__, 'Admin_faq' )); }
add_action( 'admin_init', array( 'Admin', 'admin_init' ) );
add_action( 'admin_menu', array( 'Admin', 'admin_menu' ), 5 );

/**
* Create the Menu System
*/
public static function admin_menu() {
   add_menu_page(__('Admin','menu-test'), __('Admin','menu-test'), '', 'mt-top-level-handle','statistics', plugins_url( 'Admin/favicon.png' ), null);
   add_submenu_page('mt-top-level-handle', __('Admin Summary','menu-test'), __('Visitor Summary','menu-test'), 'manage_options', 'Admin_stats',  array ( __CLASS__, 'Admin_stats' )); 
   add_submenu_page('mt-top-level-handle', __('Admin Configuration','menu-test'), __('Configuration','menu-test'), 'manage_options', 'Admin_configuration',  array ( __CLASS__, 'Admin_configuration' ));
   add_submenu_page('mt-top-level-handle', __('Admin FAQ','menu-test'), __('FAQ','menu-test'), 'manage_options', 'Admin_faq',  array ( __CLASS__, 'Admin_faq' ));          
}