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, 8 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        }