add_action('admin_menu', 'myplugin_menu_pages'); function myplugin_menu_pages() { // Add the top-level admin menu $page_title = 'My Plugin Settings'; $menu_title = 'My Plugin'; $capability = 'manage_options'; $menu_slug = 'myplugin-settings'; $function = 'myplugin_settings'; add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function); // Add submenu page with same slug as parent to ensure no duplicates $sub_menu_title = 'Settings'; add_submenu_page($menu_slug, $page_title, $sub_menu_title, $capability, $menu_slug, $function); // Now add the submenu page for Help $submenu_page_title = 'My Plugin Help'; $submenu_title = 'Help'; $submenu_slug = 'myplugin-help'; $submenu_function = 'myplugin_help'; add_submenu_page($menu_slug, $submenu_page_title, $submenu_title, $capability, $submenu_slug, $submenu_function); } function myplugin_settings() { if (!current_user_can('manage_options')) { wp_die('You do not have sufficient permissions to access this page.'); } // Render the HTML for the Settings page or include a file that does } function myplugin_help() { if (!current_user_can('manage_options')) { wp_die('You do not have sufficient permissions to access this page.'); } // Render the HTML for the Help page or include a file that does }
Provide a Shortcut to Your Settings Page with Plugin Action Links
add_filter('plugin_action_links', 'myplugin_plugin_action_links', 10, 2); function myplugin_plugin_action_links($links, $file) { static $this_plugin; if (!$this_plugin) { $this_plugin = plugin_basename(__FILE__); } if ($file == $this_plugin) { // The "page" query string value must be equal to the slug // of the Settings admin page we defined earlier, which in // this case equals "myplugin-settings". $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=myplugin-settings">Settings</a>'; array_unshift($links, $settings_link); } return $links; }