Make WordPress Core

Changeset 14031


Ignore:
Timestamp:
04/07/2010 03:25:48 PM (15 years ago)
Author:
ryan
Message:

Nav menu fixes. Props ptahdunbar. see #12896 fixes #12844

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/nav-menu.php

    r14008 r14031  
    5656    foreach ( $post_types as $post_type ) {
    5757        $id = $post_type->name;
    58         add_meta_box( "add-{$id}", sprintf( __('Add an Existing %s'), $post_type->singular_label ), 'wp_nav_menu_item_post_type_metabox', 'nav-menus', 'side', 'default', $post_type );
     58        add_meta_box( "add-{$id}", sprintf( __('Add %s'), $post_type->label ), 'wp_nav_menu_item_post_type_metabox', 'nav-menus', 'side', 'default', $post_type );
    5959    }
    6060}
     
    7373    foreach ( $taxonomies as $tax ) {
    7474        $id = $tax->name;
    75 
    76         add_meta_box( "add-{$id}", sprintf( __('Add an Existing %s'), $tax->singular_label ), 'wp_nav_menu_item_taxonomy_metabox', 'nav-menus', 'side', 'default', $tax );
     75        add_meta_box( "add-{$id}", sprintf( __('Add %s'), $tax->label ), 'wp_nav_menu_item_taxonomy_metabox', 'nav-menus', 'side', 'default', $tax );
    7776    }
    7877}
  • trunk/wp-admin/nav-menus.php

    r13974 r14031  
    275275                            <h3 class="hndle"><?php echo esc_html( $nav_menu_selected_title ); ?></h3>
    276276                            <div class="inside">
    277                                 <?php echo wp_get_nav_menu( array( 'context' => 'backend', 'menu' => $nav_menu_selected_id ) ); ?>
     277                                <?php wp_nav_menu( array( 'menu' => $nav_menu_selected_id, 'context' => 'backend' ) ); ?>
    278278                            </div><!-- /.inside -->
    279279                        <!-- /#nav-menu-canvas .postbox-->
  • trunk/wp-content/themes/twentyten/style.css

    r13872 r14031  
    114114h3#reply-title,
    115115#access .menu,
     116#access div.menu ul,
    116117#cancel-comment-reply-link,
    117118.form-allowed-tags,
     
    154155/* The main theme structure */
    155156#access .menu-header,
     157div.menu,
    156158#colophon,
    157159#branding,
     
    361363    float:left;
    362364}
    363 #access .menu-header {
     365#access .menu-header, div.menu {
    364366    font-size: 13px;
    365367    margin-left: 12px;
    366368}
    367 #access .menu-header ul {
     369#access .menu-header ul, div.menu ul {
    368370    list-style: none;
    369371    margin: 0;
    370372}
    371 #access .menu-header li {
     373#access .menu-header li, div.menu li {
    372374    float:left;
    373375    position: relative;
  • trunk/wp-includes/classes.php

    r13975 r14031  
    11791179     * @param int $depth Depth of menu item. Used for padding.
    11801180     * @param int $current_page Menu item ID.
    1181      * @param array $args
     1181     * @param object $args
    11821182     */
    11831183    function start_el(&$output, $item, $depth, $args) {
     
    12181218        $output .= "</li>\n";
    12191219    }
    1220 
    12211220}
    12221221
  • trunk/wp-includes/nav-menu-template.php

    r14013 r14031  
    2323 * link_after - Text after the link.
    2424 * 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.
     25 *
     26 * @todo 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.
    2627 *
    2728 * @since 3.0.0
     
    3233    $defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'menu_class' => 'menu', 'echo' => true,
    3334    'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '',
    34     'depth' => 0, 'walker' => '' );
     35    'depth' => 0, 'walker' => '', 'context' => 'frontend' );
    3536
    3637    $args = wp_parse_args( $args, $defaults );
     
    5253        }
    5354    }
    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 
     55   
    10756    // If the menu exists, get it's items.
    10857    if ( $menu && !is_wp_error($menu) )
     
    11160    // If no menu was found or if the menu has no items, call the fallback_cb
    11261    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 );
     62        if ( 'frontend' == $args->context && ( function_exists($args->fallback_cb) || is_callable( $args->fallback_cb ) ) ) {
     63            return call_user_func( $args->fallback_cb, (array) $args );
    11664        }
     65    }
     66   
     67    $nav_menu = '';
     68    $items = '';
     69    $container_allowedtags = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'p', 'nav' ) );
     70
     71    if ( in_array( $args->container, $container_allowedtags ) ) {
     72        $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ' class="menu-'. $menu->slug .'-container"';
     73        $nav_menu .= '<'. $args->container . $class .'>';
    11774    }
    11875
     
    12380    $items .= walk_nav_menu_tree( $menu_items, $args->depth, $args );
    12481
    125     // CSS class
    126     $ul_class = $args->menu_class ? ' class="'. $args->menu_class .'"' : '';
    127     $nav_menu .= '<ul'. $ul_class .'>';
     82    // Attributes   
     83    $attributes  = ' id="menu-' . $menu->slug . '"';
     84    $attributes .= $args->menu_class ? ' class="'. $args->menu_class .'"' : '';
     85   
     86    $nav_menu .= '<ul'. $attributes .'>';
    12887
    12988    // Allow plugins to hook into the menu to add their own <li>'s
     
    13897    $nav_menu .= '</ul>';
    13998
    140     return apply_filters( 'wp_get_nav_menu', $nav_menu );
     99    if ( in_array( $args->container, $container_allowedtags ) )
     100        $nav_menu .= '</'. $args->container .'>';
     101
     102    $nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args );
     103
     104    if ( $args->echo )
     105        echo $nav_menu;
     106    else
     107        return $nav_menu;
    141108}
    142109
     
    162129            $output .= $args->before;
    163130            $output .= '<a'. $attributes .'>';
    164             $output .= $args->link_before . apply_filters('the_title', $menu_item->title) . $args->link_after;
     131            $output .= $args->link_before . apply_filters( 'the_title', $menu_item->title ) . $args->link_after;
    165132            $output .= '</a>';
    166133            $output .= $args->after;
     
    219186    }
    220187
    221     return $output;
     188    return apply_filters( 'wp_get_nav_menu_item', $output, $context, $args );
    222189}
    223190?>
  • trunk/wp-includes/nav-menu.php

    r13974 r14031  
    179179    $args = array( $items, $depth, $r );
    180180
    181     return call_user_func_array(array(&$walker, 'walk'), $args);
     181    return call_user_func_array( array(&$walker, 'walk'), $args );
    182182}
    183183
     
    203203                $object = get_post_type_object( $menu_item->object );
    204204                $menu_item->append = $object->singular_label;
     205                $menu_item->url = get_permalink( $menu_item->object_id );
    205206
    206207            } elseif ( 'taxonomy' == $menu_item->type ) {
    207208                $object = get_taxonomy( $menu_item->object );
    208209                $menu_item->append = $object->singular_label;
     210                $menu_item->url = get_term_link( (int) $menu_item->object_id, $menu_item->object );
    209211
    210212            } else {
    211213                $menu_item->append = __('Custom');
     214                $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    212215            }
    213216
    214217            $menu_item->title = $menu_item->post_title;
    215             $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    216218            $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true );
    217219
     
    222224            $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true );
    223225            break;
    224 
     226       
    225227        case 'custom':
    226228            $menu_item->db_id = 0;
     
    236238            $menu_item->url = get_post_meta( $menu_item->ID, '_menu_item_url', true );
    237239            $menu_item->target = get_post_meta( $menu_item->ID, '_menu_item_target', true );
    238             $menu_item->classes = '';
    239             $menu_item->xfn = '';
     240            $menu_item->classes = get_post_meta( $menu_item->ID, '_menu_item_target', true );
     241            $menu_item->xfn = get_post_meta( $menu_item->ID, '_menu_item_xfn', true );
    240242            break;
    241243
     
    274276            $menu_item->target = '';
    275277            $menu_item->attr_title = '';
    276             $menu_item->description = strip_tags( $menu_item->description );
     278            $menu_item->description = '';
    277279            $menu_item->classes = '';
    278280            $menu_item->xfn = '';
    279281            break;
    280282    }
    281     return $menu_item;
     283   
     284    return apply_filters( 'wp_setup_nav_menu_item', $menu_item, $menu_item_type, $menu_item_object );
    282285}
    283286?>
Note: See TracChangeset for help on using the changeset viewer.