alandbh
4/30/2017 - 1:36 PM

The way WordPress goes through the menu pages to display the items, is using a walker object. In this case the specific class for this objec

The way WordPress goes through the menu pages to display the items, is using a walker object. In this case the specific class for this object is called Walker_Nav_Menu. You can find it in wp-includes\nav-menu-template.php.

The Walker_Nav_Menu is a pretty simple class. You are able to see, how the links and the menu structure are built there. The functions start_el and end_el are used to build the menu-items. Functions start_lvl and end_lvl are for nesting menus. In this approach we'll be mainly using start_el and end_el.

/*
In your functions.php create a class, to extend Walker_Nav_Menu with pretty similar methods to the parent class:
*/

class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
  function start_el ( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    // Copy all the start_el code from source, and modify
  }

  function end_el( &$output, $item, $depth = 0, $args = array() ) {
    // Copy all the end_el code from source, and modify
  }
}

/*
Then, in your theme files, you can call wp_nav_menu like this:
*/


  wp_nav_menu( array( 
    'theme_location'    => 'menu_global', 
    'container_class'   => 'menu_global', 
    'menu_class'        => 'nav side-menu', 
    'walker'            => new Custom_Walker_Nav_Menu,
   ) );