工具菜单下子菜单不显示,回调函数未找到报错求助
解决WordPress MU插件中添加子菜单的回调函数错误
看起来你遇到的问题是WordPress找不到你定义的回调函数,导致user_func_array()报错。我来帮你一步步排查可能的原因:
1. 检查文件是否被正确加载
首先确认你的insta.php确实放在wp-content/mu-plugins目录下,并且这个目录本身存在(如果不存在,WordPress不会自动加载里面的文件,需要手动创建)。你可以在文件里加一段测试代码验证加载状态:
// 在insta.php最顶部添加这段测试代码 add_action('admin_notices', function() { echo '<div class="notice notice-success is-dismissible"><p>我的MU插件加载成功啦!</p></div>'; });
刷新WordPress后台,如果能看到这条提示,说明文件已经被加载;如果看不到,那就是文件路径或者命名有问题,仔细检查拼写和位置。
2. 排查隐性语法错误
有时候代码里的小问题会导致函数无法被正确解析,比如遗漏分号、使用了中文符号(中文括号/引号)、括号不匹配等。你可以用本地PHP命令行工具快速检查语法:
php -l /path/to/your/wp-content/mu-plugins/insta.php
如果输出No syntax errors detected,说明语法没问题;如果有错误提示,按照提示修复即可。
3. 避免函数名冲突
有可能其他插件或者主题里已经定义了同名的register_my_custom_submenu_page函数,导致你的函数被覆盖。试试把函数名改成更独特的,比如:
function my_insta_custom_submenu_page() { add_submenu_page( 'tools.php', 'Submenu Page', 'My Custom Submenu Page', 'manage_options', 'my-custom-submenu-page' ); } add_action('admin_menu', 'my_insta_custom_submenu_page');
这样能大幅减少函数名冲突的概率。
4. 确认代码顺序正确
确保你的函数定义在add_action语句之前,就像你现在写的顺序一样——如果add_action先执行,此时函数还没定义,也会触发这个错误。
如果以上步骤都试过还是不行,可以暂时注释掉insta.php里的其他代码(如果有的话),只保留菜单注册的代码,排除其他代码的干扰。
内容的提问来源于stack exchange,提问作者user11947260
相关产品推荐
相关产品推荐

