今天补充下,如何将 外观-菜单 设置的菜单项目添加到顶部工具条,然后你可以直接在 外观-菜单 管理这个菜单的链接,效果如下如:
一起来看下实现方法,在此之前,建议大家先看下文章开头提到的文章,熟悉下添加菜单到工具条的基本方式,然后你才可能看的懂下面提到的代码。
1、假设我们通过 register_nav_menus() 函数注册了几个菜单位置:
- add_action(’after_setup_theme’,’cmp_theme_setup’);
- functioncmp_theme_setup(){
- register_nav_menus(array(
- ’main-menu’=>__(’MainMenu’,’cmp’),
- ’foot-menu’=>__(’FooterMenu’,’cmp’),
- ’foot-link’=>__(’FooterLinks’,’cmp’),
- ’user-menu’=>__(’UserMenu’,’cmp’)
- ));
- }
注:这里是我添加到主题的 functions.php 来创建菜单位置的函数,就如上图所示的“主题位置”中的主菜单、底部菜单、页脚菜单和用户菜单。大家可以自己找到你的主题的相似函数(一般搜索 register_nav_menu 可以找到的,每个主题不一样,也不一定是在这个文件,大家自己找找吧,不知道的就问主题作者)
2、然后我们要调用的是 user-menu (用户菜单)这个菜单位置的菜单,就可以使用下面的代码:
- /**
- *添加菜单到管理工具条
- *https://www.xhsay.com/wordpress-add-menu-to-admin-bar.html
- *@since1.2
- */
- functioncmp_add_admin_bar_menu(&$wp_admin_bar)
- {
- //判断user-menu这个菜单位置是否挂载了菜单
- if(has_nav_menu(’user-menu’)){
- //获取user-menu菜单的链接
- $menu=wp_get_nav_menu_object(’user-menu’);
- $menu_items=wp_get_nav_menu_items($menu->term_id);
- //添加一级菜单
- $wp_admin_bar->add_menu(array(
- ’id’=>’user-menu-0’,
- ’title’=>__(’FrontendUserMenu’,’cmp’),
- ));
- //循环输出user-menu菜单的链接作为子菜单
- foreach($menu_itemsas$menu_item){
- $wp_admin_bar->add_menu(array(
- ’id’=>’user-menu-’.$menu_item->ID,
- ’parent’=>’user-menu-’.$menu_item->menu_item_parent,
- ’title’=>$menu_item->title,
- ’href’=>$menu_item->url,
- ’meta’=>array(
- ’title’=>$menu_item->attr_title,
- ’target’=>’_blank’,
- ’class’=>implode(’’,$menu_item->classes),
- ),
- ));
- }
- }
- }
- add_action(’admin_bar_menu’,’cmp_add_admin_bar_menu’,999);
注意看下代码的注释,关键点就是获取菜单的链接,然后循环输出作为工具条的二级菜单。