diff --git a/features/media-regenerate.feature b/features/media-regenerate.feature index 51d4bd3b..5731fa76 100644 --- a/features/media-regenerate.feature +++ b/features/media-regenerate.feature @@ -676,6 +676,17 @@ Feature: Regenerate WordPress attachments "file":"canola-400x400.jpg" """ + # Check remaining metadata is present + When I run `wp post meta get {ATTACHMENT_ID} _wp_attachment_metadata` + Then STDOUT should contain: + """ + 'medium' + """ + And STDOUT should contain: + """ + 'thumbnail' + """ + # Regenerate "medium" image size removed above - should be regenerated. When I run `wp media regenerate --image_size=medium --only-missing --yes` Then STDOUT should contain: @@ -699,6 +710,17 @@ Feature: Regenerate WordPress attachments "file":"canola-300x225.jpg" """ + # Check remaining metadata is present + When I run `wp post meta get {ATTACHMENT_ID} _wp_attachment_metadata` + Then STDOUT should contain: + """ + 'medium' + """ + And STDOUT should contain: + """ + 'thumbnail' + """ + # Regenerate "medium" image size whether missing or not - should be regenerated. When I run `wp media regenerate --image_size=medium --yes` Then STDOUT should contain: @@ -715,6 +737,17 @@ Feature: Regenerate WordPress attachments """ And the wp-content/uploads/canola-300x225.jpg file should exist + # Check remaining metadata is present + When I run `wp post meta get {ATTACHMENT_ID} _wp_attachment_metadata` + Then STDOUT should contain: + """ + 'medium' + """ + And STDOUT should contain: + """ + 'thumbnail' + """ + # Change "test1" image size. Given a wp-content/mu-plugins/media-settings.php file: """ diff --git a/src/Media_Command.php b/src/Media_Command.php index 17f3c11a..80f405c8 100644 --- a/src/Media_Command.php +++ b/src/Media_Command.php @@ -580,6 +580,8 @@ private function process_regeneration( $id, $skip_delete, $only_missing, $image_ $is_pdf = 'application/pdf' === get_post_mime_type( $id ); + $original_meta = wp_get_attachment_metadata( $id ); + $needs_regeneration = $this->needs_regeneration( $id, $fullsizepath, $is_pdf, $image_size, $skip_delete, $skip_it ); if ( $skip_it ) { @@ -619,7 +621,7 @@ private function process_regeneration( $id, $skip_delete, $only_missing, $image_ } if ( $image_size ) { - if ( $this->update_attachment_metadata_for_image_size( $id, $metadata, $image_size ) ) { + if ( $this->update_attachment_metadata_for_image_size( $id, $metadata, $image_size, $original_meta ) ) { WP_CLI::log( "$progress Regenerated $thumbnail_desc for $att_desc." ); } else { WP_CLI::log( "$progress No $thumbnail_desc regeneration needed for $att_desc." ); @@ -886,8 +888,7 @@ private function remove_image_size_filters( $image_size_filters ) { } // Update attachment sizes metadata just for a particular intermediate image size. - private function update_attachment_metadata_for_image_size( $id, $new_metadata, $image_size ) { - $metadata = wp_get_attachment_metadata( $id ); + private function update_attachment_metadata_for_image_size( $id, $new_metadata, $image_size, $metadata ) { if ( ! is_array( $metadata ) ) { return false;