'', 'menu_class' => 'menu', 'format' => 'div', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'link_before' => '', 'link_after' => '', 'before_link' => '', 'after_link' => '', ); $args = wp_parse_args( $args, $defaults ); $args = apply_filters( 'wp_nav_menu_args', $args ); $args = (object) $args; // Get the nav menu $menu = wp_get_nav_menu_object( $args->menu ); // If we couldn't find a menu based off the name, id or slug, // get the first menu that has items. if ( !$menu ) { $menus = wp_get_nav_menus(); foreach ( $menus as $menu_maybe ) { if ( wp_get_nav_menu_items($menu_maybe->term_id) ) { $menu = $menu_maybe; break; } } } $args->menu = $menu->term_id; $nav_menu = ''; if ( 'div' == $args->format ) $nav_menu .= ''; $nav_menu = apply_filters( 'wp_nav_menu', $nav_menu ); return $args->echo ? print $nav_menu : $nav_menu; } /** * Returns a Navigation Menu. * * See wp_nav_menu() for args. * * @since 3.0.0 * * @param array $args Arguments * @return mixed $output False if menu doesn't exists, else, returns the menu. **/ function wp_get_nav_menu( $args = array() ) { $defaults = array( 'menu' => '', 'menu_class' => 'menu', 'ul_class' => '', 'format' => 'div', 'type' => 'frontend', 'fallback_cb' => '', 'link_before' => '', 'link_after' => '', 'before_link' => '', 'after_link' => '', ); $args = wp_parse_args( $args, $defaults ); $args = apply_filters( 'wp_get_nav_menu_args', $args ); $args = (object) $args; $menu = wp_get_nav_menu_object( $args->menu ); // If no menu was found, call the fallback_cb if ( !$menu || is_wp_error($menu) ) { if ( function_exists($args->fallback_cb) ) return call_user_func( $args->fallback_cb, $args ); } $menu_items = wp_get_nav_menu_items( $menu->term_id ); $nav_menu = ''; $parent_stack = array(); $current_parent = 0; $parent_menu_order = array(); // Setup parentage foreach ( $menu_items as $menu_item ) $parent_menu_order[ $menu_item->ID ] = $menu_item->menu_order; $ul_class = isset($args->ul_class) ? ' class="'. $args->ul_class .'"' : ''; $nav_menu .= ''; // Display Loop foreach ( $menu_items as $key => $menu_item ) : // Setup the $menu_item variables $menu_item = wp_setup_nav_menu_item( $menu_item ); $maybe_value = 'frontend' == $args->type ? '' : ' value="'. $menu_item->ID .'"'; $classes = 'frontend' == $args->type ? 'class="menu-item-'. $menu_item->type . $menu_item->li_class .'"' : ''; $nav_menu .= ''; while ( !empty( $parent_stack ) && ($last_item || $menu_items[ $key + 1 ]->post_parent != $current_parent ) ) { $nav_menu .= ''; $current_parent = array_pop( $parent_stack ); } } else { array_push( $parent_stack, $current_parent ); $current_parent = $menu_item->ID; $nav_menu .= ''; return apply_filters( 'wp_get_nav_menu', $nav_menu ); } /** * Returns a menu item. * * @since 3.0.0 * * @param object $menu_item The menu item * @param string $context frontend|backend|default * @param array $args See wp_get_nav_menu(). **/ function wp_get_nav_menu_item( $menu_item, $context, $args = array() ) { $item = ''; switch ( $context ) { case 'frontend': $attr_title = ( isset($menu_item->anchor_title) && '' != $menu_item->anchor_title ) ? ' title="'. esc_attr($menu_item->anchor_title) .'"' : ''; $href = isset($menu_item->link) ? ' href="'. esc_url($menu_item->link) .'"' : ''; $item .= 'target .'>'; $item .= $args->before_link . esc_html( $menu_item->title ) . $args->after_link; $item .= ''; break; case 'backend': $item .= '
'; $item .= ''. esc_html($menu_item->title) .''; $item .= ''; $item .= ''. esc_html($menu_item->type) .''; // Actions $item .= ''. __('Edit') .' | '; $item .= ''. __('Delete') .''; $item .= '
'; // Menu Item Settings $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; break; case 'default': $menu_id = 'menu-item-' . $menu_item->ID; $item .= ''; // Menu Item Settings $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; $item .= ''; break; } return apply_filters( 'wp_get_nav_menu_item', $item ); } ?>