Changeset 13512 for trunk/wp-includes/nav-menu.php
- Timestamp:
- 02/28/2010 08:00:49 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/wp-includes/nav-menu.php (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/nav-menu.php
r13473 r13512 8 8 */ 9 9 10 // Deletes a nav menu 11 function wp_delete_nav_menu( $menu_id ) { 12 $menu_id = (int) $menu_id; 13 if ( !$menu_id ) 10 /** 11 * Returns a Navigation Menu object 12 * 13 * @since 3.0.0 14 * 15 * @param string $menu Menu id 16 * @return mixed $menu|false 17 */ 18 function wp_get_nav_menu_object( $menu ) { 19 return is_nav_menu( $menu ); 20 } 21 22 /** 23 * Check if Menu exists. 24 * 25 * Returns the menu object, or false if the term doesn't exist. 26 * 27 * @since 3.0.0 28 * 29 * @param int|string $menu The menu to check 30 * @return mixed Menu Object, if exists. 31 */ 32 function is_nav_menu( $menu ) { 33 if ( $menu ) { 34 $menu = get_term( $menu, 'nav_menu' ); 35 } elseif ( !$menu ) { 36 $menu = get_term_by( 'slug', $menu, 'nav_menu' ); 37 } elseif( !$menu ) { 38 $menu = get_term_by( 'name', $menu, 'nav_menu' ); 39 } else { 40 $menu = false; 41 } 42 43 return $menu; 44 } 45 46 /** 47 * Returns all Navigation Menu objects. 48 * 49 * @since 3.0.0 50 * 51 * @return array menu objects 52 */ 53 function wp_get_nav_menus() { 54 return get_terms( 'nav_menu', array( 'hide_empty' => false, 'orderby' => 'id' ) ); 55 } 56 57 /** 58 * Creates a navigation menu. 59 * 60 * Optional args: 61 * slug - the url friendly version of the nav menu. 62 * 63 * @since 3.0.0 64 * 65 * @param string $menu_name Menu Name 66 * @param string $args Optional. 67 * @return mixed Menu object|WP_Error 68 */ 69 function wp_create_nav_menu( $menu_name, $args = array() ) { 70 $menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' ); 71 72 if ( $menu_exists ) 73 return new WP_Error( 'menu_exists', sprintf( __('A menu named “%s” already exists; please try another name.'), esc_html( $menu_exists->name ) ) ); 74 75 if ( isset($args['slug']) ) 76 $slug = $args['slug']; 77 else 78 $slug = $menu_name; 79 80 $menu = wp_insert_term( $menu_name, 'nav_menu', array('slug' => $slug) ); 81 82 if ( is_wp_error($menu) ) 83 return $menu; 84 85 return get_term( $menu['term_id'], 'nav_menu') ; 86 } 87 88 /** 89 * Deletes a navigation menu. 90 * 91 * @since 3.0.0 92 * 93 * @param string $menu name|id|slug 94 * @return bool true on success, else false. 95 */ 96 function wp_delete_nav_menu( $menu ) { 97 $menu = wp_get_nav_menu_object( $menu ); 98 if ( !$menu ) 14 99 return false; 15 100 16 $menu_objects = get_objects_in_term( $menu _id, 'nav_menu' );101 $menu_objects = get_objects_in_term( $menu->term_id, 'nav_menu' ); 17 102 if ( !empty( $menu_objects ) ) { 18 103 foreach ( $menu_objects as $item ) { … … 23 108 } 24 109 25 // Creates a new nav menu 26 function wp_create_nav_menu( $menu_name, $args = array() ) { 27 $menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' ); 28 29 if ( $menu_exists ) 30 return new WP_Error( 'menu_exists', sprintf( __('A menu named “%s” already exists; please try another name.'), esc_html( $menu_exists->name ) ) ); 31 32 if ( isset($args['slug']) ) 33 $slug = $args['slug']; 34 else 35 $slug = $menu_name; 36 37 $menu = wp_insert_term( $menu_name, 'nav_menu', array('slug' => $slug) ); 38 39 if ( is_wp_error($menu) ) 40 return $menu; 41 42 return get_term( $menu['term_id'], 'nav_menu'); 43 } 44 45 // Creates a default menu if none exists 110 /** 111 * Creates a nav menu named 'Menu 1'. 112 * 113 * This function is called if the user doesn't have any nav menus. 114 * It grabs the first 14 pages, and creates a new default menu. 115 * 116 * @since 3.0.0 117 */ 46 118 function wp_create_default_nav_menu() { 47 119 $menu = wp_create_nav_menu( __('Menu 1'), array('slug' => 'menu-1') ); … … 62 134 } 63 135 64 // Get nav menu by id 65 function wp_get_nav_menu( $menu ) { 66 return get_term( (int) $menu, 'nav_menu' ); 67 } 68 69 // Get all nav menus 70 function wp_get_nav_menus() { 71 return get_terms( 'nav_menu', array( 'hide_empty' => false, 'orderby' => 'id' ) ); 72 } 73 74 // Get the nav menu items 136 /** 137 * Returns the menu items of a navigation menu. 138 * 139 * @since 3.0.0 140 * 141 * @param string $menu menu name, id, or slug 142 * @param string $args 143 * @return mixed $items array of menu items, else false. 144 */ 75 145 function wp_get_nav_menu_items( $menu, $args = array() ) { 76 $items = get_objects_in_term( (int) $menu, 'nav_menu' ); 146 $menu = wp_get_nav_menu_object( $menu ); 147 148 if ( !$menu ) 149 return false; 150 151 $items = get_objects_in_term( $menu->term_id, 'nav_menu' ); 77 152 78 153 if ( ! empty( $items ) ) { 79 154 $defaults = array( 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order' ); 80 $args = wp_parse_args( $args, $defaults);155 $args = wp_parse_args( $args, $defaults ); 81 156 if ( count( $items ) > 1 ) 82 157 $args['include'] = implode( ',', $items ); … … 91 166 $output[$item->$args['output_key']] = $item; 92 167 } 93 unset( $items);94 ksort( $output);168 unset( $items ); 169 ksort( $output ); 95 170 return $output; 96 171 } … … 99 174 } 100 175 101 // wp_setup_nav_menu_item() 102 function wp_setup_nav_menu_item($menu_item, $type = 'item', $position = 0) { 176 /** 177 * Returns a menu item with all it's nessecary data populated. 178 * 179 * @since 3.0.0 180 * 181 * @param string $menu_item Menu item. 182 * @param string $type item|category|page. 183 * @param string $position position of the menu item. 184 * @return $menu_item 185 */ 186 function wp_setup_nav_menu_item( $menu_item, $type = 'item', $position = 0 ) { 103 187 global $parent_menu_order; 104 188 105 189 if ( 'item' == $type ) { 106 $menu_item->type = get_post_meta( $menu_item->ID, 'menu_type', true);107 $menu_item->object_id = get_post_meta( $menu_item->ID, 'object_id', true);190 $menu_item->type = get_post_meta( $menu_item->ID, 'menu_type', true ); 191 $menu_item->object_id = get_post_meta( $menu_item->ID, 'object_id', true ); 108 192 $menu_item->target = ( get_post_meta( $menu_item->ID, 'menu_new_window', true ) ) ? 'target="_blank"' : ''; 109 193 if ( isset( $parent_menu_order[ $menu_item->post_parent ] ) ) … … 166 250 $menu_item->li_class = ''; 167 251 global $wp_query; 168 if ( $menu_item->ID == $wp_query->get_queried_object_id() ) 169 $menu_item->li_class = 'class="current_page_item"'; 252 253 if ( $menu_item->object_id == $wp_query->get_queried_object_id() ) 254 $menu_item->li_class = ' current_page_item'; 170 255 171 256 $menu_item->anchor_title = ''; … … 196 281 return $menu_item; 197 282 } 198 199 283 ?>
Note: See TracChangeset
for help on using the changeset viewer.