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



我希望能够以这种格式在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直接添加您的子菜单链接。

最新更新