You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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仪表盘内看不到这个自定义菜单,请问哪里操作有误?

相关截图:
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';  
}

操作步骤

  1. 将上述代码复制到主题的functions.php文件中
  2. 如果要使用自定义图标,在主题目录下创建images文件夹,放入图标文件后取消代码中图标路径的注释
  3. 刷新WordPress后台,就能看到自定义菜单了

内容的提问来源于stack exchange,提问作者likith sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:53:15