diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php
index fb0d0b9660..954221c36b 100644
--- a/wp-admin/admin-ajax.php
+++ b/wp-admin/admin-ajax.php
@@ -743,7 +743,37 @@ case 'add-menu-item' :
require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
- $item_ids = wp_save_nav_menu_items( 0, $_POST['menu-item'] );
+ /**
+ * For performance reasons, we omit some object properties from the checklist.
+ * The following is a hacky way to restore them when adding non-custom items.
+ */
+ $menu_items_data = (array) $_POST['menu-item'];
+ $menu_item_data = array_shift( $menu_items_data );
+ if (
+ ! empty( $menu_item_data['menu-item-type'] ) &&
+ 'custom' != $menu_item_data['menu-item-type'] &&
+ ! empty( $menu_item_data['menu-item-object-id'] )
+ ) {
+ switch( $menu_item_data['menu-item-type'] ) {
+ case 'post_type' :
+ $_object = get_post( $menu_item_data['menu-item-object-id'] );
+ break;
+
+ case 'taxonomy' :
+ $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
+ break;
+ }
+
+ $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) );
+ $_menu_item = array_shift( $_menu_items );
+
+ /** Restore the missing menu item properties **/
+ $menu_item_data['menu-item-description'] = $_menu_item->description;
+
+ $menu_items_data = array( $menu_item_data );
+ }
+
+ $item_ids = wp_save_nav_menu_items( 0, $menu_items_data );
if ( is_wp_error( $item_ids ) )
die('-1');
diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php
index 7b4cebc056..fadd3608d7 100644
--- a/wp-admin/includes/nav-menu.php
+++ b/wp-admin/includes/nav-menu.php
@@ -245,7 +245,6 @@ class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
$output .= '';
$output .= '';
$output .= '';
- $output .= '';
$output .= '';
$output .= '';
}