From 2dca5e0bb3774fbc4b1ec4add29c41769658f753 Mon Sep 17 00:00:00 2001 From: Joe Dolson Date: Tue, 12 Apr 2022 16:14:01 +0000 Subject: [PATCH] Media: Enable edits to custom image sizes. Add a filter `edit_custom_thumbnail_sizes` to allow users to enable editing individual custom image sizes. Props silb3r, joedolson, costdev. Fixes #28277. git-svn-id: https://develop.svn.wordpress.org/trunk@53161 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/image-edit.php | 45 +++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/wp-admin/includes/image-edit.php b/src/wp-admin/includes/image-edit.php index a91f082bb6..6a0324baa8 100644 --- a/src/wp-admin/includes/image-edit.php +++ b/src/wp-admin/includes/image-edit.php @@ -43,7 +43,15 @@ function wp_image_editor( $post_id, $msg = false ) { $note = ""; } } - + $edit_custom_sizes = false; + /** + * Filters whether custom sizes are available options for image editing. + * + * @since 6.0.0 + * + * @param bool|array $edit_custom_sizes True if custom sizes can be edited or array of custom sizes. + */ + $edit_custom_sizes = apply_filters( 'edit_custom_thumbnail_sizes', $edit_custom_sizes ); ?>
@@ -239,6 +247,26 @@ function wp_image_editor( $post_id, $msg = false ) { + $size ) { + if ( array_key_exists( $size, $meta['sizes'] ) ) { + if ( 'thumbnail' === $size ) { + continue; + } + ?> + + + + +
@@ -905,10 +933,14 @@ function wp_save_image( $post_id ) { $meta['width'] = $size['width']; $meta['height'] = $size['height']; - if ( $success && ( 'nothumb' === $target || 'all' === $target ) ) { + if ( $success ) { $sizes = get_intermediate_image_sizes(); - if ( 'nothumb' === $target ) { - $sizes = array_diff( $sizes, array( 'thumbnail' ) ); + if ( 'nothumb' === $target || 'all' === $target ) { + if ( 'nothumb' === $target ) { + $sizes = array_diff( $sizes, array( 'thumbnail' ) ); + } + } elseif ( 'thumbnail' !== $target ) { + $sizes = array_diff( $sizes, array( $target ) ); } } @@ -919,6 +951,11 @@ function wp_save_image( $post_id ) { $success = true; $delete = true; $nocrop = true; + } else { + $sizes = array( $target ); + $success = true; + $delete = true; + $nocrop = $_wp_additional_image_sizes[ $size ]['crop']; } /*