Навбар в моей теме добавлен функцией wp_nav_menu () в шапке.Я изменил его поведение по умолчанию, чтобы развернуть раскрывающееся меню при наведении, а не «по щелчку» основного элемента со следующим jQuery:
jQuery('ul.navbar-nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500);
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500);
});
Единственная проблема остается, что я не знаю, какпредоставить href = "#" некоторые значения / ссылки для элементов верхнего уровня с выпадающими элементами.Когда я наводю на них курсор, раскрывающиеся элементы раскрываются, но я все же хотел бы, чтобы они были кликабельными и перенаправляли пользователя на URL.
Я знаю, что могу сделать это, просто создав навигационную панель в html / css в шаблонах страниц вручную, но тогда я потеряю возможность для пользователя легко изменять меню из панели администратора WP.
Можно ли сохранить меню зарегистрированным в WP и иметь возможность создавать кликабельные (href = "some_page.php") раскрывающиеся меню, которые будут разворачиваться при наведении?
РЕДАКТИРОВАТЬ:
Панель навигации генерируется следующим образом:
<?php wp_nav_menu(
array(
'theme_location' => 'primary',
'container_class' => 'collapse navbar-collapse',
'container_id' => 'navbarNavDropdown',
'menu_class' => 'navbar-nav mx-auto',
'fallback_cb' => '',
'menu_id' => 'main-menu',
'depth' => 3,
'walker' => new Understrap_WP_Bootstrap_Navwalker(),
)
); ?>
Отображаемое меню:
<div id="navbarNavDropdown" class="collapse navbar-collapse"><ul id="main-menu" class="navbar-nav mx-auto"><li id="menu-item-7" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home nav-item menu-item-7"><a title="Home" href="http://wp-ppp:8888/w/" class="nav-link">Home</a></li>
<li id="menu-item-34" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-34"><a title="About us" href="http://wp-ppp:8888/w/about-us/" class="nav-link">About us</a></li>
<li id="menu-item-126" class="menu-item menu-item-type-custom menu-item-object-custom nav-item menu-item-126"><a title="What's on" href="http://wp-ppp:8888/w/events/" class="nav-link">What’s on</a></li>
<li id="menu-item-284" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-284"><a title="Rider" href="http://wp-ppp:8888/w/ridehq/" class="nav-link">Rider</a></li>
<li id="menu-item-33" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-33"><a title="Join the club" href="http://wp-ppp:8888/w/join-the-club/" class="nav-link">Join the club</a></li>
<li id="menu-item-35" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-35"><a title="Youth" href="http://wp-ppp:8888/w/youth/" class="nav-link">Youth</a></li>
<li id="menu-item-36" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children nav-item menu-item-36 dropdown"><a title="Drivers" href="#" data-toggle="dropdown" class="nav-link dropdown-toggle">Drivers<span class="caret"></span></a>
<ul class=" dropdown-menu" role="menu">
<li id="menu-item-87" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-87"><a title="Sunday Races" href="http://wp-ppp:8888/w/sunday-races/" class="nav-link">Sunday Races</a></li>
<li id="menu-item-242" class="menu-item menu-item-type-post_type menu-item-object-page nav-item menu-item-242"><a title="Cars" href="http://wp-ppp:8888/w/cars/" class="nav-link">Cars</a></li>
</ul>
</li>
</ul></div> </div><!-- .container -->
Как вы можете видеть, где есть выпадающий элемент, верхний элемент, например.Драйверы имеют элемент href как «#», несмотря на тот факт, что это пользовательская ссылка в панели управления WP с указанным URL.
РЕДАКТИРОВАТЬ 2:
Согласно приведенному ниже предложению, я имеюизменил bootstrap-wp-navwalker.php.В моем случае это была другая линия.Я изменил:
if ( $args->has_children && $depth === 0 ) {
$atts['href'] = '#';
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'nav-link dropdown-toggle';
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
$atts['class'] = 'nav-link';
}
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
$item_output = $args->before;
на:
if ( $args->has_children && $depth === 0 ) {
$atts['href'] = $item->url;
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'nav-link dropdown-toggle';
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
$atts['class'] = 'nav-link';
}
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
$item_output = $args->before;
Но он ничего не делает при клике (показывает правый URL на панели предварительного просмотра в нижней части браузера.
Pastebin всего navwalker https://pastebin.com/EDCXfSXH