我希望能够以此格式在Wordpress管理区域中添加新的管理菜单部分,但使用外部链接:
Top Level
- item 1
- item 2
- item 3
然而,add_menu_page()和add_submenu_page()函数似乎只允许将菜单项添加到现有的帖子类型或页面。使用所有外部链接实现菜单的最简单方法是什么?非常感谢。
答案 0 :(得分:2)
您无法使用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";
}
参考:Adding an Arbitrary Link to the Admin Menu?
这里要注意的主要事项是你需要为&#34; slug&#34;传递一个占位符值。进入add_menu_page
,然后您将使用外部网址替换。
如果您尝试将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/');
}
参考:how to add custom link on wordpress admin sidebar
在此示例中,我们使用add_menu_page
正常设置顶级域。但是,我们需要直接操作add_submenu_page
全局变量来添加外部网址,而不是使用$submenu
作为子菜单。
第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/');
}
参考:只是我和一些试验&amp;错误:)
此示例是选项1和2中代码的组合:使用add_menu_page
设置顶级菜单;用您的外部网址替换slug,最后使用add_submenu_page
直接添加子菜单链接。