WordPress插件开发:add_menu_page回调函数找不到propertiesMenu报错
WordPress自定义后台菜单回调函数找不到的问题排查与解决
错误原因
你在调用add_menu_page时,直接将回调函数写为propertiesMenu,WordPress会默认在全局作用域中查找这个函数,但propertiesMenu是你类中的成员方法,并非全局函数,因此会触发“找不到函数”的致命错误。
解决方法
类中的成员方法作为回调时,必须使用数组形式指定,格式为[$实例对象, '方法名']。如果是在类内部调用,直接用[$this, 'propertiesMenu']即可。
修正后的代码示例
class Properties { public function __construct() { // 将菜单注册逻辑挂到admin_menu钩子,确保执行时机正确 add_action('admin_menu', [$this, 'register_custom_menu']); } public function register_custom_menu() { add_menu_page( '属性管理', // 页面标题 '属性设置', // 菜单标题 'manage_options', // 访问权限 'custom-properties', // 菜单Slug [$this, 'propertiesMenu'], // 正确的回调写法 'dashicons-admin-settings', // 菜单图标 6 // 菜单排序位置 ); } // 确保方法为public权限,否则WordPress无法访问 public function propertiesMenu() { var_dump('test'); } } // 实例化类,触发菜单注册 new Properties();
额外注意事项
- 回调方法必须设置为
public权限,若为private或protected,WordPress无法访问该方法,同样会报错。 - 菜单注册逻辑一定要挂在
admin_menu钩子上执行,避免因执行时机过早导致的功能异常。
内容的提问来源于stack exchange,提问作者twan
相关产品推荐
相关产品推荐

