我正在使用add_menu_page(...) 从自定义主题,我想用add_submenu_page(...) . 如果我尝试从主题开始,它会像预期的那样工作,但当我从插件开始尝试同样的操作时,它什么都不会做。
我认为插件可能会在菜单出现之前尝试添加子菜单页,所以我将代码包装在一个函数中并使用add_action(...) 使用在我想要代码执行的地方创建的自定义操作挂钩(与主题中的代码行完全一致)创建的插件do_action(...).
示例代码如下:
(主题)
function wvdh_add_admin_page(){
// The next 2 lines work fine
add_menu_page( \'WVDH - Settings\',\'WVDH\', \'manage_options\', \'wdvh-startpoint\', \'render_page\', \'dashicons-admin-network\', \'109\');
add_submenu_page( \'wdvh-startpoint\', \'page-title\', \'menu-title\', \'manage_options\', \'menu-slug\', \'render_page\' );
// The next line does nothing
do_action(\'wvdh-menu\');
}
add_action(\'admin_menu\', \'wvdh_add_admin_page\');
function render_page(){
echo \'<h1>Test</h1>\';
}
(插件)
add_action(\'admin_menu\', \'wvdh_create_menu\');
function wvdh_create_menu() {
add_action(\'wvdh-menu\', \'new_subpage\');
}
function new_subpage(){
add_submenu_page( \'wvdh-startpoint\', \'page-from-plugin\', \'menu-from-plugin\', \'manage_options\', \'plugin-slug\', \'wvdh_settings_page\' );
}
function wvdh_settings_page() {
echo \'<h1>Test from-plugin</h1>\';
}
最合适的回答,由SO网友:Sumit 整理而成
这只是一个输入错误
错误的
//wvdh-startpoint
add_submenu_page( \'wvdh-startpoint\', \'page-from-plugin\', \'menu-from-plugin\', \'manage_options\', \'plugin-slug\', \'wvdh_settings_page\' );
正确的
//wdvh-startpoint
add_submenu_page( \'wdvh-startpoint\', \'page-from-plugin\', \'menu-from-plugin\', \'manage_options\', \'plugin-slug\', \'wvdh_settings_page\' );