WordPress 3.0 beta 1 documentation kindly provided to you by Hay Kranen
| [ Index ] |
PHP Cross Reference of WordPress 3.0 beta 1 |
|
| [ Index ] [ Variables ] [ Functions ] [ Classes ] [ Constants ] [ Statistics ] | ||
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Navigation Menu functions 4 * 5 * @package WordPress 6 * @subpackage Nav_Menus 7 * @since 3.0.0 8 */ 9 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 Or WP_Error 17 */ 18 function wp_get_nav_menu_object( $menu ) { 19 return is_nav_menu( $menu ); 20 } 21 22 /** 23 * Check if navigation 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 it exists. Else, false or WP_Error 31 */ 32 function is_nav_menu( $menu ) { 33 if ( !$menu ) 34 return false; 35 36 $menu_obj = get_term( $menu, 'nav_menu' ); 37 38 if ( !$menu_obj ) 39 $menu_obj = get_term_by( 'slug', $menu, 'nav_menu' ); 40 41 if ( !$menu_obj ) 42 $menu_obj = get_term_by( 'name', $menu, 'nav_menu' ); 43 44 if ( !$menu_obj ) { 45 $menu_obj = false; 46 } 47 48 return $menu_obj; 49 } 50 51 /** 52 * Create a Navigation Menu. 53 * 54 * Optional args: 55 * slug - the url friendly version of the nav menu. 56 * 57 * @since 3.0.0 58 * 59 * @param string $menu_name Menu Name 60 * @param string $args Optional. 61 * @return mixed Menu object on sucess|WP_Error on failure 62 */ 63 function wp_create_nav_menu( $menu_name, $args = array() ) { 64 $menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' ); 65 66 if ( $menu_exists ) 67 return new WP_Error( 'menu_exists', sprintf( __('A menu named <strong>%s</strong> already exists; please try another name.'), esc_html( $menu_exists->name ) ) ); 68 69 if ( isset($args['slug']) ) 70 $slug = $args['slug']; 71 else 72 $slug = $menu_name; 73 74 $menu = wp_insert_term( $menu_name, 'nav_menu', array('slug' => $slug) ); 75 76 if ( is_wp_error($menu) ) 77 return $menu; 78 79 $result = get_term( $menu['term_id'], 'nav_menu' ); 80 81 if ( $result && !is_wp_error($result) ) { 82 do_action( 'wp_create_nav_menu', $menu['term_id'] ); 83 return $result; 84 } else { 85 return $result; 86 } 87 } 88 89 /** 90 * Delete a Navigation Menu. 91 * 92 * @since 3.0.0 93 * 94 * @param string $menu name|id|slug 95 * @return mixed Menu object on sucess|WP_Error on failure 96 */ 97 function wp_delete_nav_menu( $menu ) { 98 $menu = wp_get_nav_menu_object( $menu ); 99 if ( !$menu ) 100 return false; 101 102 $menu_objects = get_objects_in_term( $menu->term_id, 'nav_menu' ); 103 if ( !empty( $menu_objects ) ) { 104 foreach ( $menu_objects as $item ) { 105 wp_delete_post( $item ); 106 } 107 } 108 109 $result = wp_delete_term( $menu->term_id, 'nav_menu' ); 110 111 if ( $result && !is_wp_error($result) ) { 112 do_action( 'wp_delete_nav_menu', $menu->term_id ); 113 return $result; 114 } else { 115 return $result; 116 } 117 } 118 119 /** 120 * Returns all navigation menu objects. 121 * 122 * @since 3.0.0 123 * 124 * @return array menu objects 125 */ 126 function wp_get_nav_menus() { 127 return get_terms( 'nav_menu', array( 'hide_empty' => false, 'orderby' => 'id' ) ); 128 } 129 130 /** 131 * Returns all menu items of a navigation menu. 132 * 133 * @since 3.0.0 134 * 135 * @param string $menu menu name, id, or slug 136 * @param string $args 137 * @return mixed $items array of menu items, else false. 138 */ 139 function wp_get_nav_menu_items( $menu, $args = array() ) { 140 $menu = wp_get_nav_menu_object( $menu ); 141 142 if ( !$menu ) 143 return false; 144 145 $items = get_objects_in_term( $menu->term_id, 'nav_menu' ); 146 147 if ( ! empty( $items ) ) { 148 $defaults = array( 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order' ); 149 $args = wp_parse_args( $args, $defaults ); 150 if ( count( $items ) > 1 ) 151 $args['include'] = implode( ',', $items ); 152 else 153 $args['include'] = $items[0]; 154 155 $items = get_posts( $args ); 156 157 if ( ARRAY_A == $args['output'] ) { 158 $output = array(); 159 foreach ( $items as $item ) { 160 $output[$item->$args['output_key']] = $item; 161 } 162 unset( $items ); 163 ksort( $output ); 164 return $output; 165 } 166 } 167 return $items; 168 } 169 170 /** 171 * Retrieve the HTML list content for nav menu items. 172 * 173 * @uses Walker_Nav_Menu to create HTML list content. 174 * @since 2.1.0 175 * @see Walker::walk() for parameters and return description. 176 */ 177 function walk_nav_menu_tree( $items, $depth, $r ) { 178 $walker = ( empty($r->walker) ) ? new Walker_Nav_Menu : $r->walker; 179 $args = array( $items, $depth, $r ); 180 181 return call_user_func_array(array(&$walker, 'walk'), $args); 182 } 183 184 /** 185 * Adds all the navigation menu properties to the menu item. 186 * 187 * @since 3.0.0 188 * 189 * @param string $menu_item The menu item to modify 190 * @param string $menu_item_type The menu item type (frontend, custom, post_type, taxonomy). 191 * @param string $menu_item_object Optional. The menu item object type (post type or taxonomy). 192 * @return object $menu_item The modified menu item. 193 */ 194 function wp_setup_nav_menu_item( $menu_item, $menu_item_type = null, $menu_item_object = '' ) { 195 switch ( $menu_item_type ) { 196 case 'frontend': 197 $menu_item->db_id = (int) $menu_item->ID; 198 $menu_item->object_id = get_post_meta( $menu_item->ID, '_menu_item_object_id', true ); 199 $menu_item->object = get_post_meta( $menu_item->ID, '_menu_item_object', true ); 200 $menu_item->type = get_post_meta( $menu_item->ID, '_menu_item_type', true ); 201 202 if ( 'post_type' == $menu_item->type ) { 203 $object = get_post_type_object( $menu_item->object ); 204 $menu_item->append = $object->singular_label; 205 206 } elseif ( 'taxonomy' == $menu_item->type ) { 207 $object = get_taxonomy( $menu_item->object ); 208 $menu_item->append = $object->singular_label; 209 210 } else { 211 $menu_item->append = __('Custom'); 212 } 213 214 $menu_item->title = $menu_item->post_title; 215 $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true ); 216 $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true ); 217 218 $menu_item->attr_title = strip_tags( $menu_item->post_excerpt ); 219 $menu_item->description = strip_tags( $menu_item->post_content ); 220 221 $menu_item->classes = get_post_meta( $menu_item->ID, '_menu_item_classes', true ); 222 $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true ); 223 break; 224 225 case 'custom': 226 $menu_item->db_id = 0; 227 $menu_item->object_id = (int) $menu_item->ID; 228 $menu_item->object = 'custom'; 229 $menu_item->type = 'custom'; 230 $menu_item->append = __('custom'); 231 232 $menu_item->attr_title = strip_tags( $menu_item->post_excerpt ); 233 $menu_item->description = strip_tags( $menu_item->post_content ); 234 235 $menu_item->title = $menu_item->post_title; 236 $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true ); 237 $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true ); 238 $menu_item->classes = ''; 239 $menu_item->xfn = ''; 240 break; 241 242 case 'post_type': 243 $menu_item->db_id = 0; 244 $menu_item->object_id = (int) $menu_item->ID; 245 $menu_item->type = $menu_item_type; 246 247 $object = get_post_type_object( $menu_item_object ); 248 $menu_item->object = $object->name; 249 $menu_item->append = strtolower( $object->singular_label ); 250 251 $menu_item->title = $menu_item->post_title; 252 $menu_item->url = get_permalink( $menu_item->ID ); 253 $menu_item->target = '_self'; 254 255 $menu_item->attr_title = ''; 256 $menu_item->description = strip_tags( $menu_item->post_content ); 257 $menu_item->classes = ''; 258 $menu_item->xfn = ''; 259 break; 260 261 case 'taxonomy': 262 $menu_item->ID = $menu_item->term_id; 263 $menu_item->db_id = 0; 264 $menu_item->object_id = (int) $menu_item->term_id; 265 $menu_item->post_parent = (int) $menu_item->parent; 266 $menu_item->type = $menu_item_type; 267 268 $object = get_taxonomy( $menu_item_object ); 269 $menu_item->object = $object->name; 270 $menu_item->append = strtolower( $object->singular_label ); 271 272 $menu_item->title = $menu_item->name; 273 $menu_item->url = get_term_link( $menu_item, $menu_item_object ); 274 $menu_item->target = '_self'; 275 $menu_item->attr_title = ''; 276 $menu_item->description = strip_tags( $menu_item->description ); 277 $menu_item->classes = ''; 278 $menu_item->xfn = ''; 279 break; 280 } 281 return $menu_item; 282 } 283 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Apr 5 14:26:09 2010 | Cross-referenced by PHPXref 0.7 |