WordPress调用add_submenu_page()创建子菜单出现空白页错误怎么办
WordPress后台添加子菜单后白屏问题原因及解决方案
- 缺少必填的回调函数参数
add_menu_page()和add_submenu_page()都要求传入菜单页内容渲染的回调函数作为必填参数,你当前的写法省略了该参数,会触发PHP参数缺失的致命错误。单独添加主菜单未报错是WordPress低版本的容错机制,新增子菜单后错误被触发。
正确的代码示例如下:
// 挂载菜单注册逻辑到官方指定的admin_menu钩子,禁止全局直接执行 add_action('admin_menu', 'register_custom_admin_menu'); function register_custom_admin_menu() { // 主菜单注册,最后一个参数为页面渲染回调函数 add_menu_page("page title", "menu name", 'manage_options', "test-slug", "render_main_menu_page"); // 子菜单注册,最后一个参数为子页面渲染回调函数 add_submenu_page("test-slug", "sub title", "sub menu", 'manage_options', "test-sub-slug", "render_sub_menu_page"); } // 主菜单页面渲染逻辑 function render_main_menu_page() { echo '<div class="wrap"><h1>主菜单页面内容</h1></div>'; } // 子菜单页面渲染逻辑 function render_sub_menu_page() { echo '<div class="wrap"><h1>子菜单页面内容</h1></div>'; }
- 未挂载到正确的钩子执行
菜单注册代码必须挂载到
admin_menu动作钩子执行,不能直接在全局作用域写这两行函数调用。全局执行时WordPress后台菜单系统还未初始化,会触发函数调用时机错误。
- 权限参数不规范
你用数字10作为权限参数,这种用用户等级的写法已经被WordPress废弃,建议换成官方推荐的权限字符串,比如
manage_options对应管理员权限,避免后续版本兼容问题。
- 错误排查方法
如需查看具体错误信息,可修改WordPress根目录下的
wp-config.php配置,将define( 'WP_DEBUG', false );改为define( 'WP_DEBUG', true );,同时新增一行define( 'WP_DEBUG_DISPLAY', true );,刷新页面即可显示具体的PHP报错内容,定位问题更精准。问题修复后记得改回默认配置避免泄露站点信息。
内容的提问来源于stack exchange,提问作者MH LI
相关产品推荐
相关产品推荐

