WordPress插件激活后后台菜单未显示问题求助
解决WordPress Finances插件后台菜单不显示的问题
问题根源
你的代码核心错误在于菜单注册的时机不对:
add_action('admin_menu', 'finances_options_page')被放在了激活钩子(finances_activate)里,而激活钩子仅在插件激活的瞬间执行一次,后续后台页面加载时不会再触发这个动作,导致菜单注册代码从未真正运行。- 停用钩子里的菜单移除逻辑完全多余,插件停用后其代码不会被加载,菜单会自动消失,无需额外处理。
修正后的完整代码
<?php /* Plugin Name: Finances Description: This plugin allows to upload the extract from the bank and will load this information in the database. It will then allow you to set some categories so that a summary can be shown for analysis. Version: 0.1 */ /** * New menu and sub menus */ function finances_options_page() { add_menu_page( 'Finances', 'Finances', 'manage_options', 'finances-admin-menu-main', 'finances_admin_menu_main', 'dashicons-media-code', 1 ); add_submenu_page( 'finances-admin-menu-main', 'Upload File', 'Upload', 'manage_options', 'finances-admin-menu-sub-upload', 'finances_admin_menu_sub_upload' ); } /** * Admin main menu page. */ function finances_admin_menu_main() { ?> <h1>Finances Main</h1> <?php } function finances_admin_menu_sub_upload() { ?> <h1>Finances Upload</h1> <?php } /** * 直接注册admin_menu钩子,确保每次后台加载都执行菜单注册 */ add_action( 'admin_menu', 'finances_options_page' ); /** * Activation and Deactivation hooks. */ function finances_activate() { // 激活时可添加初始化逻辑(比如创建数据库表),但菜单注册不需要放这 } function finances_deactivate() { // 停用时可清理临时数据,菜单无需手动移除 } register_activation_hook( __FILE__, 'finances_activate' ); register_deactivation_hook( __FILE__, 'finances_deactivate' ); ?>
关键修改说明
- 将
add_action('admin_menu', 'finances_options_page')从激活函数中移出,直接放在全局作用域下,这样每次后台页面加载时都会执行菜单注册代码。 - 清空了激活和停用函数里的无效代码,仅保留钩子注册,你可以在这两个函数里添加插件激活/停用所需的初始化/清理逻辑(比如创建数据库表、删除临时选项等)。
修改后重新激活插件,后台左侧菜单就能正常显示了。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

