WordPress.org

Make WordPress Core

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

File 13378.add.menu.save.diff, 3.5 KB (added by koopersmith, 4 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