如何将一个目录中指定的自定义子级菜单添加到另一个目录中指定的自定义顶级菜单?

时间:2011-01-04 作者:Tom

我正在开发一个插件,它构建了一个顶级菜单,并驻留在/wp-content/plugins中自己的目录中。

例如,插件如下所示:

function main_menu() {
  if(function_exists(\'add_menu_page\')) {
   add_menu_page(\'Main Menu Title\', \'Main Menu\', \'administrator\', \'main-menu-handle\', \'menu-display\');
  } 
}
add_action(\'admin_menu\', \'main_menu\');
我想在将来构建额外的菜单项作为插件,以便它们可以驻留在/wp-content/plugins中自己的目录中,但将自己添加到这个特定的自定义菜单中。

理想情况下,这些新插件会这样注册:

function register_submenu() {
  if(function_exists(\'add_submenu_page\')) {
    add_submenu_page(\'main-menu-handle\', \'Widget Title\', \'Widget\', \'administrator\', \'widget-handle\', \'widget_display\');
  }
}
add_action(\'admin_menu\', \'register_submenu\');
但我似乎无法做到这一点,主要是因为WordPress使用admin的方式。php和页面查询字符串参数来导航自定义菜单。

有什么见解吗?

1 个回复
最合适的回答,由SO网友:t31os 整理而成

听起来好像您在将子菜单从插件添加到另一个插件中注册的父项时遇到问题。

为您的admin_menu 确保父(顶级)项存在于其他插件尝试向该菜单添加项的位置的操作。。

添加顶层

add_action(\'admin_menu\', \'main_menu\', 100 );
添加子项

add_action(\'admin_menu\', \'register_submenu\', 105 );
默认优先级为10,因此您的两个回调可能以错误的顺序执行。

如果有帮助,请告诉我。

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph