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

如何在WordPress菜单中显示短代码?解决自动添加http://问题

WordPress菜单添加短代码自动补全http://的原因及解决办法

问题根源

WordPress后台的自定义菜单链接字段默认带有URL格式校验与标准化机制——它默认认为自定义链接必须是合法的网址格式,当你输入短代码(比如[language-switcher])这类非URL内容时,系统会判定内容不合法,自动补全http://前缀,导致短代码被当作无效网址解析,最终菜单无法正常显示内容。

解决办法

方法1:代码修改校验规则

在主题的functions.php文件或自定义插件中添加以下代码,让菜单支持解析短代码:

// 让菜单内容支持短代码解析
add_filter('wp_nav_menu_items', 'do_shortcode');
// 处理菜单链接的URL校验
add_filter('nav_menu_link_attributes', 'allow_shortcode_in_menu_links', 10, 3);

function allow_shortcode_in_menu_links($atts, $item, $args) {
    // 检测链接中是否包含短代码标识
    if (strpos($atts['href'], '[') !== false && strpos($atts['href'], ']') !== false) {
        // 将无效URL替换为锚点,避免跳转问题
        $atts['href'] = '#';
    }
    return $atts;
}

添加后,在自定义菜单链接栏输入短代码,即便系统自动补全http://,前端也会自动解析短代码内容,同时不会触发无效跳转。

方法2:用插件快速解决

直接安装Shortcode in Menus这类专用插件,它会直接绕过WordPress的URL校验机制,允许你在菜单中直接输入短代码,无需手动编写代码。

方法3:自定义菜单Walker(适合有开发基础的用户)

自定义菜单Walker类,重写菜单链接的渲染逻辑,让菜单可以直接识别并渲染短代码,这种方式能实现更个性化的菜单控制。

内容的提问来源于stack exchange,提问作者János

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:15