diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index 588bc50895..e611287dc3 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -773,7 +773,17 @@ function _relocate_children( $old_ID, $new_ID ) { global $wpdb; $old_ID = (int) $old_ID; $new_ID = (int) $new_ID; - return $wpdb->update($wpdb->posts, array('post_parent' => $new_ID), array('post_parent' => $old_ID) ); + + $children = $wpdb->get_col( $wpdb->prepare(" + SELECT post_id + FROM $wpdb->postmeta + WHERE meta_key = '_wp_attachment_temp_parent' + AND meta_value = %d", $old_ID) ); + + foreach ( $children as $child_id ) { + $wpdb->update($wpdb->posts, array('post_parent' => $new_ID), array('ID' => $child_id) ); + delete_post_meta($child_id, '_wp_attachment_temp_parent'); + } } /** diff --git a/wp-includes/post.php b/wp-includes/post.php index 3110ba4c63..271d0dd561 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -2804,6 +2804,9 @@ function wp_insert_attachment($object, $file = false, $parent = 0) { clean_post_cache($post_ID); + if ( isset($post_parent) && $post_parent < 0 ) + add_post_meta($post_ID, '_wp_attachment_temp_parent', $post_parent, true); + if ( $update) { do_action('edit_attachment', $post_ID); } else {