个性化阅读
专注于IT技术分析

将自定义顶级外部和自定义子菜单外部链接添加到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/');
}

参考:如何在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添加子菜单链接。

赞(0)
未经允许不得转载:srcmini » 将自定义顶级外部和自定义子菜单外部链接添加到WP Admin

评论 抢沙发

评论前必须登录!