WordPress.org

Make WordPress Core

Ticket #13378: 13378.2.diff

File 13378.2.diff, 3.7 KB (added by ryan, 4 years ago)
  • wp-includes/nav-menu-template.php

     
    193193function wp_nav_menu( $args = array() ) { 
    194194        $defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'menu_class' => 'menu', 'echo' => true, 
    195195        'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 
    196         'depth' => 0, 'walker' => '', 'context' => 'frontend' ); 
     196        'depth' => 0, 'walker' => '', 'context' => 'frontend', 'slot' => '' ); 
    197197 
    198198        $args = wp_parse_args( $args, $defaults ); 
    199199        $args = apply_filters( 'wp_nav_menu_args', $args ); 
     
    202202        // Get the nav menu 
    203203        $menu = wp_get_nav_menu_object( $args->menu ); 
    204204 
     205        if ( ! $menu && $slot ) { 
     206                $slots = get_nav_menu_slots(); 
     207                if ( isset($slots) && isset($slots[$slot]) ) 
     208                        $menu = wp_get_nav_menu_object( $slots['slot'] ); 
     209        } 
     210 
    205211        // If we couldn't find a menu based off the menu argument  
    206212        // get the first menu that has items. 
    207213        if ( ! $menu ) { 
  • wp-includes/nav-menu.php

     
    6262} 
    6363 
    6464/** 
     65 * Register nav menus for a theme. 
     66 * 
     67 * @since 3.0.0 
     68 * 
     69 * @param array Associative array of menu slot identifiers and descriptions. 
     70 */ 
     71function register_nav_menus( $menus = array() ) { 
     72        global $_wp_registered_nav_menus; 
     73 
     74        add_theme_support( 'nav-menus' ); 
     75 
     76        $_wp_registered_nav_menus = $menus; 
     77} 
     78 
     79function get_registered_nav_menus() { 
     80        global $_wp_registered_nav_menus; 
     81 
     82        return $_wp_registered_nav_menus; 
     83} 
     84 
     85function get_nav_menu_slots() { 
     86        return get_option('nav_menu_slots'); 
     87} 
     88 
     89/** 
    6590 * Determine whether the given ID is a nav menu item. 
    6691 * 
    6792 * @since 3.0.0 
  • wp-content/themes/twentyten/functions.php

     
    8080        add_theme_support( 'post-thumbnails' ); 
    8181 
    8282        // This theme uses wp_nav_menu() 
    83         add_theme_support( 'nav-menus' ); 
     83        register_nav_menus( array('main' => __('Main Menu')) ); 
    8484 
    8585        // Add default posts and comments RSS feed links to head 
    8686        add_theme_support( 'automatic-feed-links' ); 
  • wp-admin/nav-menus.php

     
    482482                                                                        <input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="Enter menu name here." value="<?php echo esc_attr( $nav_menu_selected_title  ); ?>" /> 
    483483                                                                        <br class="clear" /> 
    484484                                                                </label> 
    485  
     485                                                                <?php if ( ! empty( $nav_menu_selected_id ) && $slots = get_registered_nav_menus() ) : ?> 
     486                                                                <label class="menu-name-label howto open-label" for="menu-slot"> 
     487                                                                        <span><?php _e('Theme Slot'); ?></span> 
     488                                                                        <select id="menu-slot" name="menu-slot"> 
     489                                                                        <?php foreach ( $slots as $slot_key => $slot_text ) { 
     490                                                                                echo '<option value="' . esc_attr($slot_key) . '">' . esc_html($slot_text) . '</option>'; 
     491                                                                        } 
     492                                                                        ?> 
     493                                                                        </select> 
     494                                                                        <br class="clear" /> 
     495                                                                </label> 
     496                                                                <?php endif; ?> 
    486497                                                                <div class="publishing-action"> 
    487498                                                                        <input class="button-primary" name="save_menu" type="submit" value="<?php empty($nav_menu_selected_id) ? esc_attr_e('Create Menu') : esc_attr_e('Save Menu'); ?>" /> 
    488499                                                                </div><!--END .publishing-action-->