WordPress.org

Make WordPress Core

Ticket #14415: omit-description-menu-item-checklist.14415.diff

File omit-description-menu-item-checklist.14415.diff, 2.7 KB (added by filosofo, 4 years ago)
  • wp-admin/admin-ajax.php

     
    781781 
    782782        require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; 
    783783 
    784         $item_ids = wp_save_nav_menu_items( 0, $_POST['menu-item'] ); 
     784        /** 
     785         * For performance reasons, we omit some object properties from the checklist.   
     786         * The following is a hacky way to restore them when adding non-custom items. 
     787         */ 
     788        $menu_items_data = (array) $_POST['menu-item']; 
     789        $menu_item_data = array_shift( $menu_items_data );  
     790        if (  
     791                ! empty( $menu_item_data['menu-item-type'] ) &&  
     792                'custom' != $menu_item_data['menu-item-type'] && 
     793                ! empty( $menu_item_data['menu-item-object-id'] ) 
     794        ) { 
     795                switch( $menu_item_data['menu-item-type'] ) { 
     796                        case 'post_type' : 
     797                                $_object = get_post( $menu_item_data['menu-item-object-id'] ); 
     798                        break; 
     799 
     800                        case 'taxonomy' : 
     801                                $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );  
     802                        break; 
     803                } 
     804 
     805                $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) );  
     806                $_menu_item = array_shift( $_menu_items ); 
     807 
     808                /** Restore the missing menu item properties **/ 
     809                $menu_item_data['menu-item-description'] = $_menu_item->description; 
     810 
     811                $menu_items_data = array( $menu_item_data ); 
     812        } 
     813 
     814        $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); 
    785815        if ( is_wp_error( $item_ids ) ) 
    786816                die('-1'); 
    787817 
  • wp-admin/includes/nav-menu.php

     
    249249                $output .= '<input type="hidden" class="menu-item-url" name="menu-item[' . $possible_object_id . '][menu-item-url]" value="'. esc_attr( $item->url ) .'" />'; 
    250250                $output .= '<input type="hidden" class="menu-item-target" name="menu-item[' . $possible_object_id . '][menu-item-target]" value="'. esc_attr( $item->target ) .'" />'; 
    251251                $output .= '<input type="hidden" class="menu-item-attr_title" name="menu-item[' . $possible_object_id . '][menu-item-attr_title]" value="'. esc_attr( $item->attr_title ) .'" />'; 
    252                 $output .= '<input type="hidden" class="menu-item-description" name="menu-item[' . $possible_object_id . '][menu-item-description]" value="'. esc_attr( $item->description ) .'" />'; 
    253252                $output .= '<input type="hidden" class="menu-item-classes" name="menu-item[' . $possible_object_id . '][menu-item-classes]" value="'. esc_attr( implode( ' ', $item->classes ) ) .'" />'; 
    254253                $output .= '<input type="hidden" class="menu-item-xfn" name="menu-item[' . $possible_object_id . '][menu-item-xfn]" value="'. esc_attr( $item->xfn ) .'" />'; 
    255254        }