我希望能够以这种格式但使用外部链接在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添加子菜单链接。
推荐阅读
- 在WordPress中为Gravatar img添加类
- 在WordPress中使用CMB2添加具有自定义回调函数的自定义元框()
- #私藏项目实操分享# 在shiro基础上整合jwt,可在项目中直接使用呦
- 使用 Python Poetry 进行依赖管理
- k8s 使用 vocano.sh 支持binpack
- 代码之外(人生最大的幸运就是努力没有白费#2021年底大盘点#)
- Shell 编程规范与变量
- Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级插件化终于实现!
- shell函数算法