Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have some menu items in a menu at location "main-menu". By using wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); , i get all the 13 items in a div.

Now i just need to show 10 menu items in present div and the remanining in other div (say id="new") just adjacent to it. Again if the div with id "new" has 10 menu-items in it, again a new div will be created and the remaining items are shown in it.

So is there a way to access the array that contains these menu-items? Please help.

share|improve this question
    
What should happen with child menu items? –  toscho Jan 29 '13 at 7:43

2 Answers 2

up vote 1 down vote accepted

Besides a custom walker, you could also use a filter, such as wp_nav_menu_args or wp_nav_menu_objects as described in the codex

share|improve this answer
    
Thanks Lea.. Will see in it... –  Chetana Kestikar Jan 29 '13 at 8:24

I belive you can extend Walker_Nav_Menu class to use it for your proposes. In this example important a custom_menu_walker element which is your custom walker class.

wp_nav_menu( array(
 'container' =>false,
 'menu_class' => 'nav',
 'echo' => true,
 'before' => '',
 'after' => '',
 'link_before' => '',
 'link_after' => '',
 'depth' => 0,
 'walker' => new custom_menu_walker())
 );

custom_menu_walker

class custom_menu_walker extends Walker_Nav_Menu
{
      function start_el(&$output, $item, $depth, $args)
      {
           global $wp_query;

           $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

           $class_names = $value = '';

           $classes = empty( $item->classes ) ? array() : (array) $item->classes;

           $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
           $class_names = ' class="'. esc_attr( $class_names ) . '"';

           $output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';

           $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
           $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
           $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
           $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';

           $prepend = '<strong>';
           $append = '</strong>';
           $description  = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';

           if($depth != 0)
           {
                     $description = $append = $prepend = "";
           }

            $item_output = $args->before;
            $item_output .= '<a'. $attributes .'>';
            $item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
            $item_output .= $description.$args->link_after;
            $item_output .= '</a>';
            $item_output .= $args->after;

            $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
            }
}

this isn't an code for your question, just a small example You can read a more about custom walkers at codex and here on wpse (1,2)

share|improve this answer
    
Thanks a lot Oleg... I was not quite sure about walker classes. Your code seems to be easy to understand... Thanks once again –  Chetana Kestikar Jan 29 '13 at 7:27

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.