add_submenu_page()

add_submenu_page()函数是Wordpress函数,添加子菜单页。

add_submenu_page( string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = ”, int $position = null )

添加子菜单页。
Add a submenu page.

说明(Description)

此函数具有用于确定菜单中是否包含页面的功能。

连接以处理页面输出的函数必须检查用户是否也具有所需的功能。


参数(Parameters)

参数类型必填说明
$parent_slug(string)必需父菜单的slug名称(或标准WordPress管理页的文件名)。
$page_title(string)必需选择菜单时要在页面标题标记中显示的文本。
$menu_title(string)必需用于菜单的文本。
$capability(string)必需向用户显示此菜单所需的功能。
$menu_slug(string)必需用于引用此菜单的slug名称。对于此菜单应该是唯一的,并且只包含小写字母数字、破折号和下划线字符,以便与sanitize_key()兼容。
$function(callable)可选要调用以输出此页内容的函数。
$position(int)可选此项在菜单中的显示顺序。

返回(Return)

(string|false)结果页的hook_后缀,如果用户没有所需的功能,则为false。


源码(Source)


/**
 * Add a sub menu page
 *
 * This function takes a capability which will be used to determine whether
 * or not a page is included in the menu.
 *
 * The function which is hooked in to handle the output of the page must check
 * that the user has the required capability as well.
 *
 * @global array $submenu
 * @global array $menu
 * @global type $_wp_real_parent_file
 * @global bool $_wp_submenu_nopriv
 * @global array $_registered_pages
 * @global array $_parent_pages
 *
 * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page)
 * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
 * @param string $menu_title The text to be used for the menu
 * @param string $capability The capability required for this menu to be displayed to the user.
 * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
 * @param callback $function The function to be called to output the content for this page.
 *
 * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
 */
function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
	global $submenu, $menu, $_wp_real_parent_file, $_wp_submenu_nopriv,
		$_registered_pages, $_parent_pages;
	$menu_slug = plugin_basename( $menu_slug );
	$parent_slug = plugin_basename( $parent_slug);
	if ( isset( $_wp_real_parent_file[$parent_slug] ) )
		$parent_slug = $_wp_real_parent_file[$parent_slug];
	if ( !current_user_can( $capability ) ) {
		$_wp_submenu_nopriv[$parent_slug][$menu_slug] = true;
		return false;
	}
	/*
	 * If the parent doesn't already have a submenu, add a link to the parent
	 * as the first item in the submenu. If the submenu file is the same as the
	 * parent file someone is trying to link back to the parent manually. In
	 * this case, don't automatically add a link back to avoid duplication.
	 */
	if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug ) {
		foreach ( (array)$menu as $parent_menu ) {
			if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) )
				$submenu[$parent_slug][] = array_slice( $parent_menu, 0, 4 );
		}
	}
	$submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug, $page_title );
	$hookname = get_plugin_page_hookname( $menu_slug, $parent_slug);
	if (!empty ( $function ) && !empty ( $hookname ))
		add_action( $hookname, $function );
	$_registered_pages[$hookname] = true;
	/*
	 * Backward-compatibility for plugins using add_management page.
	 * See wp-admin/admin.php for redirect from edit.php to tools.php
	 */
	if ( 'tools.php' == $parent_slug )
		$_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true;
	// No parent as top level.
	$_parent_pages[$menu_slug] = $parent_slug;
	return $hookname;
}
更新版本源码位置使用被使用
5.3.0wp-admin/includes/plugin.php:1358136

笔记(Notes)

$parent_slug的slug(第一个参数)
使用add_menu_page()创建的内部菜单
将子菜单页添加到自定义文章类型

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索