我希望能够以这种格式在WordPress管理区域中添加一个新的Admin菜单部分,但使用外部链接:
Top Level
- item 1
- item 2
- item 3
但是,函数add_menu_page()和add_submenu_page()似乎仅允许将菜单项添加到现有的帖子类型或页面中。使用所有外部链接获得菜单的最简单方法是什么?非常感谢。
您不能像发现的那样直接使用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";
}
ref:添加任意链接到管理菜单?
这里要注意的主要内容是,您需要将" slug"的占位符值传递到add_menu_page
中,然后将其替换为外部URL。如果您尝试将URL作为SLUG传递,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/');
}
ref:如何在WordPress管理侧栏上添加自定义链接
在此示例中,我们使用add_menu_page
设置了正常的顶级域。但是,我们需要直接操纵$submenu
全局变量来添加我们的外部URL,而不是将add_submenu_page
用于子菜单。
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/');
}
ref:只是我和一些试验&错误:)
此示例是选项1和2中代码的组合:使用add_menu_page
设置顶级菜单;用外部URL替换SLUG,最后使用add_submenu_page
直接添加您的子菜单链接。