Pom Canys
Pom Canys

Reputation: 379

Giving sub menus a class

I would like to give a class name to the sub menus of my navigation.

This is what I have so far:

<?php
$defaults = array(
    'theme_location'  => '',
    'menu'            => 'main-menu',
    'container'       => 'div',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => ''
);

wp_nav_menu( $defaults );
?>

How can I do this?

Upvotes: 0

Views: 43

Answers (1)

NICO
NICO

Reputation: 1843

You need to add a filter to 'nav_menu_css_class'.
Put the following in your theme's functions.php file:

add_filter( 'nav_menu_css_class', 'my_sub_menu_class', 10, 2 );
function my_sub_menu_class( $classes, $item ) {

    if ( $item->post_parent ) {
        $classes[] = 'your_class_name';
    }

    return $classes;
}

Upvotes: 1

Related Questions