如何让WordPress的URL与BreadCrumb匹配站点菜单层级结构?
WordPress面包屑与URL匹配自定义菜单结构的解决方案
一、URL路径匹配菜单层级设置
- 无需将Services设置为分类,改用父子页面层级结构即可实现路径匹配:先创建Services页面(后续可设置为不可访问),将Web D&D设置为Services的子页面,再把Custom Software Development、Content Management Platforms设置为Web D&D的子页面,页面层级会自动对应你想要的菜单结构。
- 进入后台
设置 -> 固定链接,选择自定义结构,填入/%postname%/保存即可,子页面的URL会自动生成层级结构,比如Custom Software Development页面的URL会自动展示为你的域名/services/web-d&d/custom-software-development/。 - 若不想让Services页面对外可访问,可在主题
functions.php文件中添加如下代码:
// 访问Services页面时自动跳转首页 add_action('template_redirect', function() { if (is_page('services')) { // 此处可替换为Services页面的ID wp_redirect(home_url(), 301); exit; } });
二、面包屑适配调整
- 直接激活已安装的All in One SEO插件,使用其自带的面包屑功能即可适配页面层级:激活后进入
All in One SEO -> 外观设置 -> 面包屑,开启面包屑功能,勾选「使用页面层级作为面包屑结构依据」,再进入外观 -> 自定义 -> 常规设置 -> 面包屑关闭Sinatra主题自带的面包屑即可。 - 不想用插件的话也可以直接修改Sinatra主题的面包屑输出逻辑,找到主题目录下
template-parts/breadcrumbs.php文件,将默认的面包屑判断规则改为读取页面父子层级输出即可。
三、无跳转菜单组实现
- WordPress原生菜单就支持纯分组功能,你已经将Services设置为跳转目标为
#的自定义链接,若要完全取消点击效果,可以在菜单设置界面开启「CSS类」显示选项,给Services菜单添加自定义类no-click-menu,再在主题自定义CSS中添加如下代码:
.no-click-menu { pointer-events: none; cursor: default; }
设置完成后Services菜单项点击无任何反应,仅作为子菜单分组容器使用。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

