Please note that the information in this post may no longer be accurate or up to date. I recommend checking more recent posts or official documentation for the most current information on this topic. This post has not been updated and is being kept for archival purposes.
If you’ve been developing on WordPress, then you may have had to use WP 3.0’s Menus: http://codex.wordpress.org/Function_Reference/wp_nav_menu
wp_nav_menu( array ( 'menu' => 'main-menu', 'container' => FALSE, 'container_id' => FALSE, 'menu_class' => '', 'menu_id' => FALSE, 'depth' => 1, 'walker' => new Description_Walker ) );
Let’s create a custom description walker…
Add this Class to your theme’s functions.php file
You will need to add this class to your theme’s function.php file and customize to suit your needs:
/** * Create HTML list of nav menu items. * Replacement for the native Walker, using the description. * * @see http://wordpress.stackexchange.com/q/14037/ * @author toscho, http://toscho.de */ class Description_Walker extends Walker_Nav_Menu { /** * Start the element output. * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. May be used for padding. * @param array $args Additional strings. * @return void */ function start_el(&$output, $item, $depth, $args) { $classes = empty ( $item->classes ) ? array () : (array) $item->classes; $class_names = join( ' ' , apply_filters( 'nav_menu_css_class' , array_filter( $classes ), $item ) ); ! empty ( $class_names ) and $class_names = ' class="'. esc_attr( $class_names ) . '"'; $output .= "
Change the Depth of Menu Description
To change the depth you will need to modify the following lines of code to output the descriptions for submenu items:
$description = ( ! empty ( $item->description ) and 0 == $depth )
Change to the following for Submenus
$description = ( ! empty ( $item->description ) and 1 == $depth )