将自定义顶级外部和自定义子菜单外部链接添加到WP Admin

我希望能够以这种格式但使用外部链接在Wordpress Admin区域中添加新的管理菜单部分:

Top Level - item 1 - item 2 - item 3

但是, 函数add_menu_page()和add_submenu_page()似乎仅允许将菜单项添加到现有帖子类型或页面中。用所有外部链接获得菜单的最简单方法是什么?非常感谢。
#1你不能像发现的那样直接使用add_menu_page()和add_submenu_page()直接添加外部链接, 但是你可以操纵全局$ menu和$ submenu变量来实现此目的(无论如何, 直到WP 4.8.1)
1.添加一个外部链接作为顶层菜单
如果要将外部链接添加为单个顶级菜单, 可以按以下步骤进行操作:
add_action( 'admin_menu', 'admin_menu_add_external_link_top_level' ); function admin_menu_add_external_link_top_level() { global $menu; $menu_slug = "external_slug"; // just a placeholder for when we call add_menu_page $menu_pos = 1; // whatever position you want your menu to appear// create the top level menu, using $menu_slug as a placeholder for the link add_menu_page( 'admin_menu_add_external_link_top_level', 'External Link', 'read', $menu_slug, '', 'icon', $menu_pos ); // replace the slug with your external url $menu[$menu_pos][2] = "http://www.example.com"; }

参考:将任意链接添加到管理菜单?
这里要注意的主要事情是, 你需要将” slug” 的占位符值传递到add_menu_page中, 然后将其替换为外部url。如果你尝试将网址作为首尾传递, 则Wordpress会将其附加到网站域中, 例如http://yourdomain.com/www.example.com。
2.添加带有外部链接子菜单的顶层菜单
添加具有包含外部链接的子菜单的普通顶级菜单, 如下所示:
add_action('admin_menu', 'admin_menu_add_external_links_as_submenu'); function admin_menu_add_external_links_as_submenu() { global $submenu; $menu_slug = "externallink"; // used as "key" in menus $menu_pos = 1; // whatever position you want your menu to appear// create the top level menu add_menu_page( 'external_link', 'External Links', 'read', $menu_slug, '', '', $menu_pos); // add the external links to the slug you used when adding the top level menu $submenu[$menu_slug][] = array('Example', 'manage_options', 'http://www.example.com/'); $submenu[$menu_slug][] = array('Google', 'manage_options', 'https://www.google.com/'); }

【将自定义顶级外部和自定义子菜单外部链接添加到WP Admin】参考:如何在Wordpress管理员侧边栏上添加自定义链接
在此示例中, 我们使用add_menu_page正常设置了顶级域。但是, 除了使用add_submenu_page作为子菜单之外, 我们还需要直接操作$ submenu全局变量来添加外部URL。
3.添加带有外部链接和外部链接子菜单的顶层菜单
尽管其含义还不是很清楚, 但我认为你想添加一个顶层菜单, 它是一个外部链接, 并且还具有一个外部链接的子菜单?
我不确定为什么要这样做, 但是如果这样做, 可以将上述内容结合起来实现:
add_action( 'admin_menu', 'admin_menu_add_external_link_top_submenu' ); function admin_menu_add_external_link_top_submenu() { global $menu; global $submenu; $menu_slug = "http://www.example.com"; // url for the top-level option $menu_pos = 1; // whatever position you want your menu to appear// create the top level menu, using $menu_slug as a placeholder for the link add_menu_page( 'admin_menu_add_external_link_top_level', 'External Links', 'read', 'my_slug', '', 'icon', $menu_pos ); // replace the slug with your external url $menu[$menu_pos][2] = $myslug; // add your submenu of external links // add the links to the "slug" for your top-level menu (which is now your external url) $submenu[$menu_slug][] = array('Example', 'manage_options', 'http://www.example.com/'); $submenu[$menu_slug][] = array('Google', 'manage_options', 'https://www.google.com/'); }

参考:我和一些试验和错误:)
此示例是选项1和2中代码的组合:使用add_menu_page设置顶级菜单;用你的外部网址替换该标签, 最后直接使用add_submenu_page添加子菜单链接。

    推荐阅读