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

如何将WordPress菜单设置为全大写显示?使用wp_nav_menu钩子遇阻

解决WordPress菜单全大写显示的问题

嘿,我懂你碰到的麻烦了——用wp_nav_menu过滤器的时候,拿到的是整个菜单的完整HTML代码,确实没法方便地单独修改每个菜单项的文本。其实有更精准的方案,不用去折腾整个HTML字符串:

方法一:用专门的菜单项标题钩子(推荐)

WordPress提供了nav_menu_item_title过滤器,它专门用来处理单个菜单项的标题文本,完美适配你的需求。直接在主题的functions.php里加这段代码就行:

function convert_menu_items_to_uppercase($title, $item, $args, $depth) {
    // 将每个菜单项的标题转换为全大写
    return strtoupper($title);
}
add_filter('nav_menu_item_title', 'convert_menu_items_to_uppercase', 10, 4);

这个钩子的四个参数分别是:

  • $title:当前菜单项的原始文本(就是你要修改的核心内容)
  • $item:菜单项的对象(包含ID、链接等完整信息)
  • $args:菜单的配置参数(比如菜单名称、显示位置)
  • $depth:当前菜单项的层级(处理多级菜单时可以针对性调整)

这样每个菜单项的标题都会被单独转换成大写,完全不用碰整个HTML结构,安全又省心。

方法二:用CSS实现(更简单)

如果不需要动态控制(比如某些菜单项例外),直接用CSS实现是最快捷的方式。找到你的菜单容器的类名(比如默认主题的.main-navigation),然后加这段样式:

.main-navigation li a {
    text-transform: uppercase;
}

这种方法不需要修改PHP代码,直接在主题的自定义CSS或者style.css里添加即可,效果立竿见影。

为什么你原来的方法不太合适

wp_nav_menu过滤器返回的是已经渲染好的完整HTML,要是你想通过字符串替换来修改文本,很容易误改菜单里的其他元素(比如子菜单的嵌套标签、图标代码等),反而容易出问题。所以优先用上面两种方法哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:33:58