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 )

Similar Posts