Bootstrap 4 WP Navwalker 多级下拉菜单
Bootstrap 4 WP Navwalker Multi-Level Dropdown
基本上,我正在尝试将 WP Navwalker 下拉菜单设置为三个级别,而不是默认的 2 个级别。
我找到了这方面的教程,但它们似乎是针对 Bootstrap 3 的,因为我没有 .dropdown-submenu class .
这是我尝试做的一个例子,但这对我不起作用(我猜是因为我没有 .dropdown-submenu class)
https://joeybabcock.me/blog/html/bootstrap-multi-level-dropdown-menus-in-wordpress/
<div class="container header_primary py-4 fw-c">
<div class="row">
<div class="col-lg-3 col-md-4 col-sm-6 col-6 d-flex align-items-center">
<a href="<?php bloginfo('url'); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/logo-black.png" alt=""></a>
</div><!-- .site-branding -->
<div class="col-lg-8 col-md-8 col-sm-6 col-6 header_navigation justify-content-end align-items-center">
<nav class="primary_style navbar navbar-expand-lg navbar-expand-md navbar-light float-md-right d-md-flex d-block">
<button class="navbar-toggler float-right" type="button" data-toggle="collapse" data-target="#bs4navbar1" aria-controls="mobileNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<?php
wp_nav_menu([
'menu' => 'main-nav',
'theme_location' => 'top',
'container' => 'div',
'container_id' => 'bs4navbar',
'container_class' => 'collapse navbar-collapse',
'menu_id' => false,
'menu_class' => 'navbar-nav',
'depth' => 3,
'fallback_cb' => 'bs4navwalker::fallback',
'walker' => new bs4navwalker()
]);
?>
</nav>
</div>
</div>
对于 bootstrap 4 和 wp-bootstrap-navwalker... https://joeybabcock.me/blog/html/bootstrap-multi-level-dropdown-menus-in-wordpress/
这实际上对我来说非常有效
我从未使用过 bs4navwalker,但我认为这会导致您的问题。
我正在使用的其他一些东西是 Roots Bedrock framework, with a Roots sage theme。工作起来很有魅力。这是我把所有东西都放在我的圣人主题上的地方:
/resources/views/header.blade.php 替换菜单功能
{{ wp_nav_menu(['theme_location' => 'primary_navigation',
'depth' => 3, // 1 = no dropdowns, 2 = with dropdowns, 3 = multilevel dropdowns
'container' => 'div',
'container_class' => 'justify-content-end',
'container_id' => 'bs-navbar-collapse-1',
'menu_class' => 'nav navbar-nav text-capitalize',
'fallback_cb' => 'WP_Bootstrap_Navwalker::fallback',
'walker' => new WP_Bootstrap_Navwalker(),]) }}
/resources/assets/styles/layouts/_menus.scss 在最底部
.dropdown-submenu {
position: relative;
}
.dropdown-submenu .dropdown-menu {
top: 0; left: 95%; margin-top: -1px;
}
@media (max-width: 992px)
{
.dropdown-menu {
padding: .5rem 0;
margin: .125rem 0 0;
}
li > ul > li > ul > li > .dropdown-item {
padding: .25rem 3rem;
}
li > ul > li > ul > li > .dropdown-item:before {
content: '• ';
}
}
/resources/assets/scripts/routes/common.js 在“init()”函数中
$('.dropdown-menu > li > .dropdown-menu').parent().addClass('dropdown-submenu').find(' > .dropdown-item').attr('href', 'javascript:;').addClass('dropdown-toggle');
$('.dropdown-submenu > a').on("click", function(e) {
var dropdown = $(this).parent().find(' > .show');
$('.dropdown-submenu .dropdown-menu').not(dropdown).removeClass('show');
$(this).next('.dropdown-menu').toggleClass('show');
e.stopPropagation();
});
$('.dropdown').on("hidden.bs.dropdown", function() {
$('.dropdown-menu.show').removeClass('show');
});
基本上,我正在尝试将 WP Navwalker 下拉菜单设置为三个级别,而不是默认的 2 个级别。
我找到了这方面的教程,但它们似乎是针对 Bootstrap 3 的,因为我没有 .dropdown-submenu class .
这是我尝试做的一个例子,但这对我不起作用(我猜是因为我没有 .dropdown-submenu class)
https://joeybabcock.me/blog/html/bootstrap-multi-level-dropdown-menus-in-wordpress/
<div class="container header_primary py-4 fw-c">
<div class="row">
<div class="col-lg-3 col-md-4 col-sm-6 col-6 d-flex align-items-center">
<a href="<?php bloginfo('url'); ?>"><img src="<?php echo get_template_directory_uri(); ?>/images/logo-black.png" alt=""></a>
</div><!-- .site-branding -->
<div class="col-lg-8 col-md-8 col-sm-6 col-6 header_navigation justify-content-end align-items-center">
<nav class="primary_style navbar navbar-expand-lg navbar-expand-md navbar-light float-md-right d-md-flex d-block">
<button class="navbar-toggler float-right" type="button" data-toggle="collapse" data-target="#bs4navbar1" aria-controls="mobileNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<?php
wp_nav_menu([
'menu' => 'main-nav',
'theme_location' => 'top',
'container' => 'div',
'container_id' => 'bs4navbar',
'container_class' => 'collapse navbar-collapse',
'menu_id' => false,
'menu_class' => 'navbar-nav',
'depth' => 3,
'fallback_cb' => 'bs4navwalker::fallback',
'walker' => new bs4navwalker()
]);
?>
</nav>
</div>
</div>
对于 bootstrap 4 和 wp-bootstrap-navwalker... https://joeybabcock.me/blog/html/bootstrap-multi-level-dropdown-menus-in-wordpress/
这实际上对我来说非常有效我从未使用过 bs4navwalker,但我认为这会导致您的问题。
我正在使用的其他一些东西是 Roots Bedrock framework, with a Roots sage theme。工作起来很有魅力。这是我把所有东西都放在我的圣人主题上的地方:
/resources/views/header.blade.php 替换菜单功能
{{ wp_nav_menu(['theme_location' => 'primary_navigation',
'depth' => 3, // 1 = no dropdowns, 2 = with dropdowns, 3 = multilevel dropdowns
'container' => 'div',
'container_class' => 'justify-content-end',
'container_id' => 'bs-navbar-collapse-1',
'menu_class' => 'nav navbar-nav text-capitalize',
'fallback_cb' => 'WP_Bootstrap_Navwalker::fallback',
'walker' => new WP_Bootstrap_Navwalker(),]) }}
/resources/assets/styles/layouts/_menus.scss 在最底部
.dropdown-submenu {
position: relative;
}
.dropdown-submenu .dropdown-menu {
top: 0; left: 95%; margin-top: -1px;
}
@media (max-width: 992px)
{
.dropdown-menu {
padding: .5rem 0;
margin: .125rem 0 0;
}
li > ul > li > ul > li > .dropdown-item {
padding: .25rem 3rem;
}
li > ul > li > ul > li > .dropdown-item:before {
content: '• ';
}
}
/resources/assets/scripts/routes/common.js 在“init()”函数中
$('.dropdown-menu > li > .dropdown-menu').parent().addClass('dropdown-submenu').find(' > .dropdown-item').attr('href', 'javascript:;').addClass('dropdown-toggle');
$('.dropdown-submenu > a').on("click", function(e) {
var dropdown = $(this).parent().find(' > .show');
$('.dropdown-submenu .dropdown-menu').not(dropdown).removeClass('show');
$(this).next('.dropdown-menu').toggleClass('show');
e.stopPropagation();
});
$('.dropdown').on("hidden.bs.dropdown", function() {
$('.dropdown-menu.show').removeClass('show');
});