This post is part of the ClassicPress Plugin Development series in which I am going to look at both best practice for developing plugins and how I approach some requirements as well as some of the functions I commonly use.
Once you have added a custom top level menu for your plugin, you can add submenu items. This is done using the add_submenu_page
function:
add_submenu_page(string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null)
Click to show/hide
$parent_slug (string) (Required) The slug name for the parent menu (or the file name of a standard WordPress admin page).
$page_title (string) (Required) The text to be displayed in the title tags of the page when the menu is selected.
$menu_title (string) (Required) The text to be used for the menu.
$capability (string) (Required) The capability required for this menu to be displayed to the user.
$menu_slug (string) (Required) The slug name to refer to this menu by. Should be unique for this menu and only include lowercase alphanumeric, dashes, and underscores characters to be compatible with sanitize_key().
$function (callable) (Optional) The function to be called to output the content for this page.
Default value: ''
$position (int) (Optional) The position in the menu order this item should appear.
Default value: null
The below example is extracted from my To Twitter plugin which adds a submenu to the azrcrv-m menu item:
add_action('admin_menu', 'azrcrv_tt_create_admin_menu');
/**
* Add to menu.
*
* @since 1.0.0
*
*/
function azrcrv_tt_create_admin_menu(){
add_submenu_page(
'azrcrv-tt'
,__('Send Tweet', 'to-twitter')
,__('Send Tweet', 'to-twitter')
,'manage_options'
,'azrcrv-tt-smt'
,'azrcrv_tt_display_send_manual_tweet');
}
This will add a second sublevel menu to the custom top level menu which takes the user to a different options page.
To add a custom top level menu to a network admin dashboard, change the admin_menu
tag in the add_action
function call to network_admin_menu
.