例如,在我的wordpress导航菜单设置中,如下所示。
- 主页
- 关于我们
- 我们是谁
- 我们做什么
- 服务
- Web开发
- Web设计
在所有这些菜单和子菜单上,我为每一个都有设置页面链接,这样用户就可以随心所欲地导航它们。
但是当我使用本教程中讨论的Bootstrap navwalker php插件时
http://www.pattonwebz.com/wordpress-custom/bootstrap-wordpress-responsive-menu/
"关于我们和服务"的链接被禁用。这是因为这两个菜单中都有子菜单内容,而且不知何故,插件只是禁用了任何包含子菜单的顶部菜单链接。我可以问一下需要做些什么来恢复"关于我们"answers"服务"菜单上的链接吗?我可以在下面的wp_nav_menu代码中切换任何选项吗?
<?php
wp_nav_menu( array(
'menu' => 'top_menu',
'depth' => 2,
'container' => false,
'menu_class' => 'nav',
'fallback_cb' => 'wp_page_menu',
'walker' => new wp_bootstrap_navwalker())
);
?>
可以修改这个导航器,使其执行您想要的操作,即将链接输出为href
值,并允许您单击链接。
这里有两个问题需要解决:
- 使用的navwalker没有将url输出到
href
属性(而是输出"#") - Bootstrap使用
e.preventDefault
禁用链接单击行为,并将其替换为自己的函数
让导航器输出一个url并停止Bootstrap接管点击行为只是修改导航器中的几行。我有一个repo的分支,它包含一个修改版本的walker。
停止Bootstrap接管链接的点击行为有一些含义。下拉菜单是在Bootstrap JS点击时打开的,所以如果你删除了它,那么菜单就不能再打开了。一个快速的解决方法是让它们出现在父对象的悬停位置。这是css可以做到这一点:
.menu-item-has-children:hover ul.dropdown-menu {
display: block;
}
请注意,Navwalker的原始版本中禁用带有下拉菜单项是有原因的(Bootstrap核心不支持)。使顶级项目可点击链接意味着需要在悬停时显示下拉列表。触摸屏用户无法悬停。如果你预计有人会使用触摸屏,那么你应该避免让菜单项带有下拉链接,而只将它们作为下拉开关。
披露:我写了问题中引用的文章,并为使用的原始navwalker贡献了代码。
试试这个:(在尝试之前,你应该从wordpress管理面板创建导航菜单,没有它,它就无法工作。)
<div class="collapse navbar-collapse navbar-ex1-collapse">
<?php wp_nav_menu(array(
'container_class' => 'menu-header',
'theme_location' => 'primary',
'items_wrap' => '<ul id="%1$s" class="%2$s nav navbar-nav">%3$s</ul>',
'walker' => new BS3_Walker_Nav_Menu,
)); ?>
</div>
<!-- /.navbar-collapse -->
有关子菜单,请参见此处