我正在尝试在WordPress中创建以下菜单:
<ul class="nav navbar-nav navbar-right">
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle nav-active">Link</a>
</li>
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle">Link</a>
</li>
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle">Link</a>
</li>
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle">Link</a>
<ul class="dropdown-menu other_dropdwn">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle">Link</a>
<ul class="dropdown-menu other_dropdwn">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li class="dropdown submenu">
<a href="#" class="dropdown-toggle">Link</a>
<ul class="dropdown-menu">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li><a href="#">Link</a></li>
到目前为止,这是我想出的...
菜单本身嵌入在我的header.php中
<?php
wp_nav_menu( array(
'theme_location' => 'primary-menu',
'menu' => 'primary-menu',
'container' => false,
'container_class' => false,
'container_id' => false,
'menu_class' => 'nav navbar-nav navbar-right',
'menu_id' => false,
'depth' => 0,));
?>
我的functions.php
页
//Load Custom Menu Navigation
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array(
'primary-menu' => __( 'Primary Menu' ),
)
);
}
//Clean up Custom Menu by Removing Unecessary Tags
add_filter( 'nav_menu_item_id', 'wp_nav_menu_attributes_filter', 100, 1 );
add_filter( 'page_css_class', 'wp_nav_menu_attributes_filter', 100, 1 );
add_action( 'init', 'wp_nav_menu_attributes_filter' );
function wp_nav_menu_attributes_filter( $var ) {
return is_array( $var ) ? array_intersect( $var, array( 'current-menu-item' ) ) : '';
}
//Remove Unecessary <li> Classes
add_filter( 'nav_menu_css_class', 'my_nav_menu_css_class' );
function my_nav_menu_css_class( $classes ) {
$custom_classes = array();
foreach ( $classes as $class ) {
if ( $class == 'menu-item' ) {
return $custom_classes;
}
$custom_classes[] = $class;
}
}
//Add Custom Class to Navigation <a> Tags
add_filter( 'nav_menu_link_attributes', 'add_class_anchor_nav_primary', 10, 3 );
function add_class_anchor_nav_primary( $atts, $item, $args ) {
//Check for Location of Menu
if ( $args->theme_location == 'primary-menu' ) {
// Add the Class
$atts['class'] = 'dropdown submenu';
}
return $atts;
}
这是将类添加到每个标记中,而我只需要它们位于链接的第一层而不是下拉菜单的子菜单项中。 TIA,我们将不胜感激!
答案 0 :(得分:3)
问题在于primary-menu
是完整的顶部菜单,因此不能用于您的菜单项。尝试以下方法:
add_filter( 'nav_menu_link_attributes', 'add_class_anchor_nav_primary', 10, 3 );
function add_class_anchor_nav_primary( $atts, $item, $args ) {
if ( (int) $item->menu_item_parent === 0 ) {
$class = 'dropdown submenu';
$atts['class'] = $class;
}
return $atts;
}
这会将您的课程添加到除下拉链接之外的所有主要链接中。之所以有效,是因为我们正在检查给定项目是否具有父项。如果不是(=== 0),我们可以说这是一个非下拉链接。我已经对其进行了测试,并且可以正常工作。