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

如何在wp-admin/customize.php中限制WordPress菜单最大深度?

限制WordPress自定义器(customize.php)中的菜单深度

可以通过两种可靠的方式实现,无需直接修改核心文件:

方法一:使用PHP钩子(推荐)

WordPress提供了nav_menu_item_depth_limit过滤器,能直接限制菜单的最大深度,这是最稳定的方案,不会因核心更新失效。

在主题的functions.php或自定义插件中添加以下代码:

add_filter( 'nav_menu_item_depth_limit', 'custom_limit_nav_menu_depth', 10, 2 );
function custom_limit_nav_menu_depth( $depth_limit, $menu_id ) {
    // 将3改为你需要的最大深度(比如2表示最多两级菜单)
    return 3;
}

这个钩子会全局限制所有导航菜单的可设置深度,包括自定义器中的菜单编辑。

方法二:修改JS变量(针对自定义器界面)

你找到的wpNavMenu.options.menuItemDepthPerLevel确实控制自定义器中菜单的层级显示,但直接修改核心JS文件不可取,应该通过后台加载自定义JS来覆盖这个变量:

  1. 先在主题或插件中创建一个JS文件(比如customize-nav-menu-depth.js),内容如下:
jQuery(document).ready(function($) {
    // 等待自定义器菜单组件加载完成
    $(document).on('ready', function() {
        if (typeof wpNavMenu !== 'undefined' && wpNavMenu.options) {
            // 设置每个层级的最大深度,这里设为2(即最多允许两级子菜单)
            wpNavMenu.options.menuItemDepthPerLevel = 2;
        }
    });
});
  1. 然后在functions.php中添加代码,将这个JS文件加载到自定义器页面:
add_action( 'customize_controls_enqueue_scripts', 'enqueue_custom_menu_depth_script' );
function enqueue_custom_menu_depth_script() {
    wp_enqueue_script(
        'custom-menu-depth',
        get_stylesheet_directory_uri() . '/customize-nav-menu-depth.js', // 替换为你的JS文件路径
        array( 'jquery', 'customize-nav-menus' ), // 依赖核心的自定义菜单JS
        wp_get_theme()->get('Version'),
        true
    );
}

注意:这种方法只修改自定义器界面的交互限制,建议配合方法一的PHP钩子,确保前端输出的菜单也遵守深度限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:02:37