WordPress.org

Make WordPress Core

Ticket #13378: 13378.3.diff

File 13378.3.diff, 3.7 KB (added by ryan, 8 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_theme_mod('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-->