2017-08-31 57 views
0

我希望能够在这个格式添加新的管理员菜单部分在WordPress管理区,但使用外部链接:添加自定义顶级外部和自定义子菜单的外部链接WP管理员

Top Level 
    - item 1 
    - item 2 
    - item 3 

然而,函数add_menu_page()和add_submenu_page()似乎只允许将菜单项添加到现有的帖子类型或页面。使用所有外部链接实现菜单的最简单方法是什么?非常感谢。

+0

可能的https://wordpress.stackexchange.com/questions/266318/how-to-add-custom-submenu-links-in-wp-admin-menus重复 –

回答

2

不能添加外部链接直接使用​​和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?

这里要注意的主要事情是,你需要为“弹头”的占位符值传递到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/'); 
} 

Ref:how to add custom link on wordpress admin sidebar

在这个例子中,我们设置了top-l evel域如同正常使用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设置顶级菜单;用你的外部网址替换slu and,最后使用add_submenu_page直接添加你的子菜单链接。

+0

感谢您的详细回复,效果很好,非常感谢。 – d1ch0t0my

+0

@ d1ch0t0my很高兴能帮到你!只要WP不要马上改变他们的内部菜单处理:) – FluffyKitten

相关问题