我正在开发一个插件,它构建了一个顶级菜单,并驻留在/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和页面查询字符串参数来导航自定义菜单。
有什么见解吗?
最合适的回答,由SO网友:t31os 整理而成
听起来好像您在将子菜单从插件添加到另一个插件中注册的父项时遇到问题。
为您的admin_menu
确保父(顶级)项存在于其他插件尝试向该菜单添加项的位置的操作。。
添加顶层
add_action(\'admin_menu\', \'main_menu\', 100 );
添加子项
add_action(\'admin_menu\', \'register_submenu\', 105 );
默认优先级为10,因此您的两个回调可能以错误的顺序执行。
如果有帮助,请告诉我。