我正在尝试在所有设备上实现以下代码作为导航栏。但是,我不能这样做。我正在使用带有WordPress的w3-css框架。
<div class="w3-top w3-navbar">
<ul class="w3-navbar w3-blue-grey w3-left-align ">
<li><a href="<?php echo home_url(); ?>" class="w3-padding-large w3-large w3-highway-blue"><i class="topnav-icons fa fa-home w3-margin-right"></i><?php bloginfo ('name'); ?></a></li>
<?php
$args = array(
'theme_location' => 'primary',
'container_class' => 'w3-top',
'menu_class' => 'w3-navbar',
);
?>
<?php wp_nav_menu( $args); ?>
<li class="w3-hide-small w3-right w3-padding-large">+91 987654321</li>
</ul>
</div>
<!-- Navbar on small screens -->
<div id="navDemo" class="w3-hide w3-hide-large w3-hide-medium w3-top" style="margin-top:51px">
<ul class="w3-navbar w3-left-align w3-large w3-theme">
<?php wp_nav_menu($args); ?>
</ul>
</div>发布于 2016-10-05 09:47:19
在外观->菜单下的主题设置中,确保您想要输出的菜单的位置被设置为“主”,正如您在$args数组中的设置一样。
另外,我注意到您的第二个wp_nav_menu()实例没有包含$args数组。如果希望第一个和第二个导航菜单输出为相同的导航菜单,则至少需要添加一个数组,该数组在数组的"theme_location“索引中指定相同的位置。
发布于 2021-02-10 03:01:43
尝试在您的functions.php中使用一些filters
function w3css_nav_menu_submenu_css_class_filter ($classes, $args) {
if ($args->theme_location === 'primary') {
$classes []= 'w3-dropdown-content w3-bar-block w3-card';
}
else {
$classes []= 'w3-margin-left';
}
return $classes;
}
add_filter('nav_menu_submenu_css_class', 'w3css_nav_menu_submenu_css_class_filter', 10, 2);
function w3css_nav_menu_css_class_filter ($classes, $item, $args, $depth) {
if ($args->theme_location === 'primary') {
$classes []= 'w3-bar-item';
}
return $classes;
}
add_filter('nav_menu_css_class', 'w3css_nav_menu_css_class_filter', 10, 4);
function w3css_nav_menu_link_attributes_filter ($atts, $item, $args) {
if ($args->theme_location === 'primary') {
$atts['class'] = 'w3-button';
}
return $atts;
}
add_filter('nav_menu_link_attributes', 'w3css_nav_menu_link_attributes_filter', 10, 3);
// From: https://stackoverflow.com/questions/8448978/wordpress-how-do-i-know-if-a-menu-item-has-children
function menu_set_dropdown( $sorted_menu_items, $args ) {
if ($args->theme_location === 'primary') {
$last_top = 0;
foreach ( $sorted_menu_items as $key => $obj ) {
// it is a top lv item?
if ( 0 == $obj->menu_item_parent ) {
// set the key of the parent
$last_top = $key;
} else {
$sorted_menu_items[$last_top]->classes['w3-dropdown-hover'] = 'w3-dropdown-hover';
}
}
}
return $sorted_menu_items;
}
add_filter( 'wp_nav_menu_objects', 'menu_set_dropdown', 10, 2 );然后,您可以调用header.php中的菜单函数
wp_nav_menu( array(
'theme_location' => 'primary',
'items_wrap' => '<ul id="%1$s" class="w3-bar w3-bar-item %2$s">%3$s</ul>',
'add_items_class' => '',
'container' => false
) );它将是类似如下的输出:
<ul id="menu-primary-menu" class="w3-bar w3-bar-item menu">
<li id="menu-item-139" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-has-children w3-dropdown-hover menu-item-139 w3-bar-item">
<a href="http://example.org/w3css/" aria-current="page" class="w3-button">Home</a>
<ul class="sub-menu w3-dropdown-content w3-bar-block w3-card">
<li id="menu-item-143" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-143 w3-bar-item">
<a href="http://example.org/about/" class="w3-button">About</a>
</li>
</ul>
</li>
<li id="menu-item-140" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-140 w3-bar-item">
<a href="http://example.org/about/" class="w3-button">About</a>
</li>
<li id="menu-item-141" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-141 w3-bar-item">
<a href="http://example.org/blog/" class="w3-button">Blog</a>
</li>
<li id="menu-item-142" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-142 w3-bar-item">
<a href="http://example.org/contact/" class="w3-button">Contact</a>
</li>
</ul>顺便说一句,您可以从W3CSS Starter模板复制许多功能:https://github.com/webarthur/w3css-starter
我希望我能帮上忙。=)
https://stackoverflow.com/questions/39843346
复制相似问题