WordPress.org

Make WordPress Core

Ticket #13378: 13378.add.menu.save.diff

File 13378.add.menu.save.diff, 3.5 KB (added by koopersmith, 8 years ago)
  • wp-admin/js/nav-menu.dev.js

     
    679679                },
    680680
    681681                eventOnClickMenuSave : function(clickedEl) {
     682                        var locs = '';
     683                        // Copy menu theme locations
     684                        $('#nav-menu-theme-locations select').each(function() {
     685                                locs += '<input type="hidden" name="' + this.name + '" value="' + $(this).val() + '" />';
     686                        });
     687                        $('#update-nav-menu').append( locs );
    682688                        // Update menu item position data
    683689                        api.menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } );
    684690                        return true;
  • wp-admin/nav-menus.php

     
    270270        case 'update':
    271271                check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
    272272
     273                if ( ! current_theme_supports('nav-menus') && ! current_theme_supports('widgets') )
     274                        break;
     275
     276                // Update menu theme locations
     277                set_theme_mod( 'nav_menu_locations', $_POST['menu-locations'] );
     278
    273279                // Add Menu
    274280                if ( 0 == $nav_menu_selected_id ) {
    275                         if ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) {
    276                                 $new_menu_title = esc_html( $_POST['menu-name'] );
     281                        $new_menu_title = esc_html( $_POST['menu-name'] );
    277282
    278                                 if ( $new_menu_title ) {
    279                                         $_nav_menu_selected_id = wp_update_nav_menu_object( 0, array('menu-name' => $new_menu_title) );
     283                        if ( $new_menu_title ) {
     284                                $_nav_menu_selected_id = wp_update_nav_menu_object( 0, array('menu-name' => $new_menu_title) );
    280285
    281                                         if ( is_wp_error( $_nav_menu_selected_id ) ) {
    282                                                 $messages[] = '<div id="message" class="error"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
    283                                         } else {
    284                                                 if ( ( $_menu_locations = get_registered_nav_menus() ) && 1 == count( wp_get_nav_menus() ) )
    285                                                         set_theme_mod( 'nav_menu_locations', array( key( $_menu_locations ) => $_nav_menu_selected_id ) );
    286                                                 unset( $_menu_locations );
    287                                                 $_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
    288                                                 $nav_menu_selected_id = $_nav_menu_selected_id;
    289                                                 $nav_menu_selected_title = $_menu_object->name;
    290                                                 $messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
    291                                         }
     286                                if ( is_wp_error( $_nav_menu_selected_id ) ) {
     287                                        $messages[] = '<div id="message" class="error"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
    292288                                } else {
    293                                         $messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
     289                                        if ( ( $_menu_locations = get_registered_nav_menus() ) && 1 == count( wp_get_nav_menus() ) )
     290                                                set_theme_mod( 'nav_menu_locations', array( key( $_menu_locations ) => $_nav_menu_selected_id ) );
     291                                        unset( $_menu_locations );
     292                                        $_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
     293                                        $nav_menu_selected_id = $_nav_menu_selected_id;
     294                                        $nav_menu_selected_title = $_menu_object->name;
     295                                        $messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
    294296                                }
     297                        } else {
     298                                $messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
    295299                        }
    296300
    297301                // update existing menu