我发现此问题已在其他帖子中得到解决,但是,我无法使用this site上无效的顶级导航链接。
这是一个基于BootStrap 3构建的WordPress站点,使用NavWalker将WordPress导航集成到Bootstrap结构中。这是导航代码:
<div class="navbar navbar-default col-md-9" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<?php
wp_nav_menu( array(
'menu' => 'Primary',
'theme_location' => 'Primary',
'depth' => 2,
'container' => 'div',
'container_class' => 'collapse navbar-collapse col-md-9',
'container_id' => 'none',
'menu_class' => 'nav navbar-nav',
'fallback_cb' => 'wp_bootstrap_navwalker::fallback',
'walker' => new wp_bootstrap_navwalker())
);
?>
</div><!-- /.container -->
</div><!-- /.navbar -->
这本身就缺乏在下拉菜单中使用的悬停功能。我已使用wpeden中的以下解决方案解决了这个问题:
( function( $ ) {
jQuery(function($) {
$('.navbar .dropdown').hover(function() {
$(this).find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
$(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp();
});
$('.navbar .dropdown > a').click(function(){
location.href = this.href;
});
});
} )( jQuery );
这可以很好地显示下拉导航,但父菜单项上没有活动链接。
我已经确认父母实际上有活动链接,将他们移出导航层次结构,没有孩子,他们正确显示链接,所以有些东西缺少,我无法识别和我会很感激一双眼睛来帮助发现它。
答案 0 :(得分:7)
NavWalker似乎就是这样设计的。您需要在#85 行 wp_bootstrap_navwalker.php 中编辑源代码。
让父母保留href
,即使它有孩子
if ( $args->has_children && $depth === 0 ) {
// $atts['href'] = '#'; // old line
$atts['href'] = ! empty( $item->url ) ? $item->url : ''; // new line
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
$atts['aria-haspopup'] = 'true';
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
}