'', 'container' => 'div', 'container_class' => '', 'menu_class' => 'menu', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'depth' => 0, 'walker' => '' ); $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; } } } if ( $menu && ! is_wp_error( $menu ) ) $args->menu = $menu->term_id; $nav_menu = ''; if ( 'div' == $args->container ) { $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ''; if ( is_nav_menu($menu) ) { $nav_menu .= ''; $nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args ); if ( $args->echo ) echo $nav_menu; else return $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', 'context' => 'frontend', 'depth' => 0, 'fallback_cb' => '', 'walker' => '', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', ); $args = wp_parse_args( $args, $defaults ); $args = apply_filters( 'wp_get_nav_menu_args', $args ); $args = (object) $args; // Variable setup $nav_menu = ''; $items = ''; // Get the menu object $menu = wp_get_nav_menu_object( $args->menu ); // If the menu exists, get it's items. if ( $menu && !is_wp_error($menu) ) $menu_items = wp_get_nav_menu_items( $menu->term_id, $args->context ); // If no menu was found or if the menu has no items, call the fallback_cb if ( !$menu || is_wp_error($menu) || ( isset($menu_items) && empty($menu_items) ) ) { if ( function_exists($args->fallback_cb) || is_callable( $args->fallback_cb ) ) { $_args = array_merge( (array) $args, array('echo' => false) ); return call_user_func( $args->fallback_cb, $_args ); } } // Set up the $menu_item variables foreach ( (array) $menu_items as $key => $menu_item ) $menu_items[$menu_item->menu_order] = wp_setup_nav_menu_item( $menu_item, 'frontend' ); $items .= walk_nav_menu_tree( $menu_items, $args->depth, $args ); // CSS class $ul_class = $args->menu_class ? ' class="'. $args->menu_class .'"' : ''; $nav_menu .= ''; // Allow plugins to hook into the menu to add their own
  • 's if ( 'frontend' == $args->context ) { $items = apply_filters( 'wp_nav_menu_items', $items, $args ); $items = apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args ); $nav_menu .= $items; } else { $nav_menu .= $items; } $nav_menu .= ''; return apply_filters( 'wp_get_nav_menu', $nav_menu ); } /** * Returns the menu item formatted based on it's context. * * @since 3.0.0 * * @param string $menu_item The menu item to format. * @param string $context The context to which the menu item will be formatted to. * @param string $args Optional. Args used for the 'template' context. * @return string $output The menu formatted menu item. */ function wp_get_nav_menu_item( $menu_item, $context = 'frontend', $args = array() ) { $output = ''; switch ( $context ) { case 'frontend': $attributes = ( isset($menu_item->attr_title) && '' != $menu_item->attr_title ) ? ' title="'. esc_attr($menu_item->attr_title) .'"' : ''; $attributes .= ( isset($menu_item->target) && '' != $menu_item->target ) ? ' target="'. esc_attr($menu_item->target) .'"' : ''; $attributes .= ( isset($menu_item->xfn) && '' != $menu_item->xfn ) ? ' rel="'. esc_attr($menu_item->xfn) .'"' : ''; $attributes .= ( isset($menu_item->url) && '' != $menu_item->url ) ? ' href="'. esc_attr($menu_item->url) .'"' : ''; $output .= esc_html( $args->before ); $output .= ''; $output .= esc_html( $args->link_before . apply_filters('the_title', $menu_item->title) . $args->link_after ); $output .= ''; $output .= esc_html( $args->after ); break; case 'backend': $output .= '
    '; $output .= ''. esc_html( $menu_item->title ) .''; $output .= ''; $output .= ''. esc_html( $menu_item->append ) .''; // Actions $output .= ''. __('Edit') .' | '; $output .= ''. __('Delete') .''; $output .= '
    '; // Menu Item Settings $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; break; case 'custom': case 'taxonomy': case 'post_type': $output .= ''; // Menu item hidden fields $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; break; } return $output; } ?>