WordPress 6.1自定义后台菜单不显示问题求助
WordPress自定义后台菜单不显示的问题排查与修复
问题描述
我是WordPress主题开发新手,当前使用WordPress 6.1版本,想添加自定义后台菜单,编写的index.php代码如下:
<?php /* Theme Name: shopping-theme-wordpress Author: wp content Author URI: https://wp-content.co/ Description: My custom theme Version: 1.0 Tested upto: 5.4 */ /** * Register a custom menu page. */ function wpdocs_register_my_custom_menu_page(){ add_menu_page( __( 'Custom Menu Title', 'textdomain' ), 'custom menu', 'manage_options', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6 ); } add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' ); /** * Display a custom menu page */ function my_custom_menu_page(){ esc_html_e( 'Admin Page Test', 'textdomain' ); } get_header(); get_footer(); ?>
但在WordPress仪表盘内看不到这个自定义菜单,请问哪里操作有误?
相关截图:
问题原因与修复方案
1. 错误使用插件路径函数
plugins_url()是专门用于获取插件文件路径的函数,在主题环境下完全不适用。你代码里写的plugins_url( 'myplugin/images/icon.png' )指向的是插件目录,主题里根本没有这个路径,不仅图标加载失败,还可能干扰菜单的正常注册。
- 修复:如果不需要图标,直接删掉这个参数;如果要用主题内的图标,换成
get_template_directory_uri(),比如:get_template_directory_uri() . '/images/icon.png'
2. 代码放错了文件
主题的index.php是前台页面的模板,后台初始化时根本不会加载这个文件,所以admin_menu钩子根本没被触发。
- 修复:把后台菜单注册的代码全部移到主题的
functions.php文件里,WordPress后台启动时会自动加载这个文件,钩子就能正常生效。
3. 未定义的文本域
代码里用了'textdomain'作为翻译文本域,但你没做国际化注册,虽然这不会直接导致菜单消失,但属于不规范写法。
- 修复:如果不需要多语言支持,直接用字符串代替翻译函数,比如把
__( 'Custom Menu Title', 'textdomain' )改成'Custom Menu Title',esc_html_e( 'Admin Page Test', 'textdomain' )改成echo 'Admin Page Test';。
4. 兼容性标注过时
主题头部注释里写的Tested upto: 5.4,和你用的WP 6.1版本不符,虽然不是主要问题,但建议更新成Tested upto: 6.1,避免潜在的兼容性提示。
修正后的代码示例(放在functions.php中)
<?php /** * Register a custom menu page. */ function wpdocs_register_my_custom_menu_page(){ add_menu_page( 'Custom Menu Title', 'custom menu', 'manage_options', 'custompage', 'my_custom_menu_page', // 如需使用主题图标,取消注释并修改路径 // get_template_directory_uri() . '/images/icon.png', 6 ); } add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' ); /** * Display a custom menu page */ function my_custom_menu_page(){ echo 'Admin Page Test'; }
操作步骤
- 将上述代码复制到主题的
functions.php文件中 - 如果要使用自定义图标,在主题目录下创建
images文件夹,放入图标文件后取消代码中图标路径的注释 - 刷新WordPress后台,就能看到自定义菜单了
内容的提问来源于stack exchange,提问作者likith sai
相关产品推荐
相关产品推荐

