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 template functions 4 * 5 * @package WordPress 6 * @subpackage Nav_Menus 7 * @since 3.0.0 8 */ 9 10 /** 11 * Displays a navigation menu. 12 * 13 * Optional $args contents: 14 * 15 * id - The menu id. Defaults to blank. 16 * slug - The menu slug. Defaults to blank. 17 * menu_class - CSS class to use for the div container of the menu list. Defaults to 'menu'. 18 * format - Whether to format the ul. Defaults to 'div'. 19 * fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. 20 * before - Text before the link text. 21 * after - Text after the link text. 22 * link_before - Text before the link. 23 * link_after - Text after the link. 24 * echo - Whether to echo the menu or return it. Defaults to echo. 25 * show_home - If you set this argument, then it will display the link to the home page. The show_home argument really just needs to be set to the value of the text of the link. 26 * 27 * @since 3.0.0 28 * 29 * @param array $args Arguments 30 */ 31 function wp_nav_menu( $args = array() ) { 32 $defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'menu_class' => 'menu', 'echo' => true, 33 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 34 'depth' => 0, 'walker' => '' ); 35 36 $args = wp_parse_args( $args, $defaults ); 37 $args = apply_filters( 'wp_nav_menu_args', $args ); 38 $args = (object) $args; 39 40 // Get the nav menu 41 $menu = wp_get_nav_menu_object( $args->menu ); 42 43 // If we couldn't find a menu based off the name, id or slug, 44 // get the first menu that has items. 45 if ( !$menu ) { 46 $menus = wp_get_nav_menus(); 47 foreach ( $menus as $menu_maybe ) { 48 if ( wp_get_nav_menu_items($menu_maybe->term_id) ) { 49 $menu = $menu_maybe; 50 break; 51 } 52 } 53 } 54 55 if ( $menu && ! is_wp_error( $menu ) ) 56 $args->menu = $menu->term_id; 57 $nav_menu = ''; 58 59 if ( 'div' == $args->container ) { 60 $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ''; 61 62 if ( is_nav_menu($menu) ) { 63 $nav_menu .= '<div id="menu-' . $menu->slug . '"'. $class .'>'; 64 } else { 65 $nav_menu .= '<div'. $class .'>'; 66 } 67 } 68 69 $nav_menu .= wp_get_nav_menu( $args ); 70 71 if ( 'div' == $args->container ) 72 $nav_menu .= '</div>'; 73 74 $nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args ); 75 76 if ( $args->echo ) 77 echo $nav_menu; 78 else 79 return $nav_menu; 80 } 81 82 /** 83 * Returns a Navigation Menu. 84 * 85 * See wp_nav_menu() for args. 86 * 87 * @since 3.0.0 88 * 89 * @param array $args Arguments 90 * @return mixed $output False if menu doesn't exists, else, returns the menu. 91 **/ 92 function wp_get_nav_menu( $args = array() ) { 93 $defaults = array( 'menu' => '', 'menu_class' => 'menu', 'context' => 'frontend', 'depth' => 0, 94 'fallback_cb' => '', 'walker' => '', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', ); 95 96 $args = wp_parse_args( $args, $defaults ); 97 $args = apply_filters( 'wp_get_nav_menu_args', $args ); 98 $args = (object) $args; 99 100 // Variable setup 101 $nav_menu = ''; 102 $items = ''; 103 104 // Get the menu object 105 $menu = wp_get_nav_menu_object( $args->menu ); 106 107 // If the menu exists, get it's items. 108 if ( $menu && !is_wp_error($menu) ) 109 $menu_items = wp_get_nav_menu_items( $menu->term_id, $args->context ); 110 111 // If no menu was found or if the menu has no items, call the fallback_cb 112 if ( !$menu || is_wp_error($menu) || ( isset($menu_items) && empty($menu_items) ) ) { 113 if ( function_exists($args->fallback_cb) || is_callable( $args->fallback_cb ) ) { 114 $_args = array_merge( (array) $args, array('echo' => false) ); 115 return call_user_func( $args->fallback_cb, $_args ); 116 } 117 } 118 119 // Set up the $menu_item variables 120 foreach ( (array) $menu_items as $key => $menu_item ) 121 $menu_items[$menu_item->menu_order] = wp_setup_nav_menu_item( $menu_item, 'frontend' ); 122 123 $items .= walk_nav_menu_tree( $menu_items, $args->depth, $args ); 124 125 // CSS class 126 $ul_class = $args->menu_class ? ' class="'. $args->menu_class .'"' : ''; 127 $nav_menu .= '<ul'. $ul_class .'>'; 128 129 // Allow plugins to hook into the menu to add their own <li>'s 130 if ( 'frontend' == $args->context ) { 131 $items = apply_filters( 'wp_nav_menu_items', $items, $args ); 132 $items = apply_filters( "wp_nav_menu_{$menu->slug}_items", $items, $args ); 133 $nav_menu .= $items; 134 } else { 135 $nav_menu .= $items; 136 } 137 138 $nav_menu .= '</ul>'; 139 140 return apply_filters( 'wp_get_nav_menu', $nav_menu ); 141 } 142 143 /** 144 * Returns the menu item formatted based on it's context. 145 * 146 * @since 3.0.0 147 * 148 * @param string $menu_item The menu item to format. 149 * @param string $context The context to which the menu item will be formatted to. 150 * @param string $args Optional. Args used for the 'template' context. 151 * @return string $output The menu formatted menu item. 152 */ 153 function wp_get_nav_menu_item( $menu_item, $context = 'frontend', $args = array() ) { 154 $output = ''; 155 switch ( $context ) { 156 case 'frontend': 157 $attributes = ( isset($menu_item->attr_title) && '' != $menu_item->attr_title ) ? ' title="'. esc_attr($menu_item->attr_title) .'"' : ''; 158 $attributes .= ( isset($menu_item->target) && '' != $menu_item->target ) ? ' target="'. esc_attr($menu_item->target) .'"' : ''; 159 $attributes .= ( isset($menu_item->xfn) && '' != $menu_item->xfn ) ? ' rel="'. esc_attr($menu_item->xfn) .'"' : ''; 160 $attributes .= ( isset($menu_item->url) && '' != $menu_item->url ) ? ' href="'. esc_attr($menu_item->url) .'"' : ''; 161 162 $output .= esc_html( $args->before ); 163 $output .= '<a'. $attributes .'>'; 164 $output .= esc_html( $args->link_before . apply_filters('the_title', $menu_item->title) . $args->link_after ); 165 $output .= '</a>'; 166 $output .= esc_html( $args->after ); 167 168 break; 169 170 case 'backend': 171 $output .= '<dl><dt>'; 172 $output .= '<span class="item-title">'. esc_html( $menu_item->title ) .'</span>'; 173 $output .= '<span class="item-controls">'; 174 $output .= '<span class="item-type">'. esc_html( $menu_item->append ) .'</span>'; 175 176 // Actions 177 $output .= '<a class="item-edit thickbox" id="edit-'. esc_attr( $menu_item->ID ) .'" value="'. esc_attr( $menu_item->ID ) .'" title="'. __('Edit Menu Item') .'" href="#TB_inline?height=540&width=300&inlineId=menu-item-settings">'. __('Edit') .'</a> | '; 178 $output .= '<a class="item-delete" id="delete-'. esc_attr( $menu_item->ID ) .'" value="'. esc_attr( $menu_item->ID ) .'">'. __('Delete') .'</a>'; 179 180 $output .= '</span></dt></dl>'; 181 182 // Menu Item Settings 183 $output .= '<input type="hidden" name="menu-item-db-id[]" value="'. esc_attr( $menu_item->ID ) .'" />'; 184 $output .= '<input type="hidden" name="menu-item-object-id[]" value="'. esc_attr( $menu_item->object_id ) .'" />'; 185 $output .= '<input type="hidden" name="menu-item-object[]" value="'. esc_attr( $menu_item->object ) .'" />'; 186 $output .= '<input type="hidden" name="menu-item-parent-id[]" value="'. esc_attr( $menu_item->post_parent ) .'" />'; 187 $output .= '<input type="hidden" name="menu-item-position[]" value="'. esc_attr( $menu_item->menu_order ) .'" />'; 188 $output .= '<input type="hidden" name="menu-item-type[]" value="'. esc_attr( $menu_item->type ) .'" />'; 189 $output .= '<input type="hidden" name="menu-item-title[]" value="'. esc_attr( $menu_item->title ) .'" />'; 190 $output .= '<input type="hidden" name="menu-item-url[]" value="'. esc_attr( $menu_item->url ) .'" />'; 191 $output .= '<input type="hidden" name="menu-item-description[]" value="'. esc_attr( $menu_item->description ) .'" />'; 192 $output .= '<input type="hidden" name="menu-item-classes[]" value="'. esc_attr( $menu_item->classes ) .'" />'; 193 $output .= '<input type="hidden" name="menu-item-xfn[]" value="'. esc_attr( $menu_item->xfn ) .'" />'; 194 $output .= '<input type="hidden" name="menu-item-attr-title[]" value="'.esc_attr( $menu_item->post_excerpt ) .'" />'; 195 $output .= '<input type="hidden" name="menu-item-target[]" value="'. esc_attr( $menu_item->target ) .'" />'; 196 break; 197 198 case 'custom': 199 case 'taxonomy': 200 case 'post_type': 201 $output .= '<label class="menu-item-title"><input type="checkbox" id="'. esc_attr( 'menu-item-' . $menu_item->object_id ) .'" value="'. esc_attr( $menu_item->url ) .'" />'. $menu_item->title .'</label>'; 202 203 // Menu item hidden fields 204 $output .= '<input type="hidden" class="menu-item-db-id" value="0" />'; 205 $output .= '<input type="hidden" class="menu-item-object-id" value="'. esc_attr( $menu_item->object_id ) .'" />'; 206 $output .= '<input type="hidden" class="menu-item-object" value="'. esc_attr( $menu_item->object ) .'" />'; 207 $output .= '<input type="hidden" class="menu-item-parent-id" value="'. esc_attr( $menu_item->post_parent ) .'" />'; 208 $output .= '<input type="hidden" class="menu-item-type" value="'. esc_attr( $menu_item->type ) .'" />'; 209 $output .= '<input type="hidden" class="menu-item-append" value="'. esc_attr( $menu_item->append ) .'" />'; 210 $output .= '<input type="hidden" class="menu-item-title" value="'. esc_attr( $menu_item->title ) .'" />'; 211 $output .= '<input type="hidden" class="menu-item-url" value="'. esc_attr( $menu_item->url ) .'" />'; 212 $output .= '<input type="hidden" class="menu-item-append" value="'. esc_attr( $menu_item->append ) .'" />'; 213 $output .= '<input type="hidden" class="menu-item-target" value="'. esc_attr( $menu_item->target ) .'" />'; 214 $output .= '<input type="hidden" class="menu-item-attr_title" value="'. esc_attr( $menu_item->attr_title ) .'" />'; 215 $output .= '<input type="hidden" class="menu-item-description" value="'. esc_attr( $menu_item->description ) .'" />'; 216 $output .= '<input type="hidden" class="menu-item-classes" value="'. esc_attr( $menu_item->classes ) .'" />'; 217 $output .= '<input type="hidden" class="menu-item-xfn" value="'. esc_attr( $menu_item->xfn ) .'" />'; 218 break; 219 } 220 221 return $output; 222 } 223 ?>
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 |