From f4c5e5c393532779d4e1d7bfe6580f5b9cc9aa4f Mon Sep 17 00:00:00 2001 From: Nikunj Hatkar Date: Thu, 22 May 2025 20:11:38 +0530 Subject: [PATCH 1/3] Fix site icon change reflect issue when image edit --- src/wp-admin/includes/image-edit.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/wp-admin/includes/image-edit.php b/src/wp-admin/includes/image-edit.php index d0a3abdc15559..23434e015df2c 100644 --- a/src/wp-admin/includes/image-edit.php +++ b/src/wp-admin/includes/image-edit.php @@ -902,6 +902,10 @@ function wp_restore_image( $post_id ) { * @return stdClass */ function wp_save_image( $post_id ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php'; + + $wp_site_icon = new WP_Site_Icon(); + $_wp_site_icon_sizes = $wp_site_icon->additional_sizes(); $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $return = new stdClass(); @@ -973,6 +977,18 @@ function wp_save_image( $post_id ) { $backup_sizes = array(); } + // Check if the image is a site icon. + $site_icon_sizes = array( 'site_icon-32', 'site_icon-180', 'site_icon-192', 'site_icon-270' ); + $is_site_icon_image = false; + if ( isset( $meta['sizes'] ) && is_array( $meta['sizes'] ) ) { + foreach ( $site_icon_sizes as $site_icon_size ) { + if ( array_key_exists( $site_icon_size, $meta['sizes'] ) ) { + $is_site_icon_image = true; + break; + } + } + } + // Generate new filename. $path = get_attached_file( $post_id ); @@ -1115,6 +1131,12 @@ function wp_save_image( $post_id ) { ); } + if ( $is_site_icon_image && ! empty( $_wp_site_icon_sizes ) ) { + foreach ( $_wp_site_icon_sizes as $size => $size_data ) { + $_sizes[ $size ] = $size_data; + } + } + $meta['sizes'] = array_merge( $meta['sizes'], $img->multi_resize( $_sizes ) ); } From 787f14929f42655c7543aee5da7b92a489138cbd Mon Sep 17 00:00:00 2001 From: Nikunj Hatkar Date: Fri, 23 May 2025 09:52:45 +0530 Subject: [PATCH 2/3] Optimize code --- src/wp-admin/includes/image-edit.php | 35 +++++++++++++--------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/wp-admin/includes/image-edit.php b/src/wp-admin/includes/image-edit.php index 23434e015df2c..11f13ce844889 100644 --- a/src/wp-admin/includes/image-edit.php +++ b/src/wp-admin/includes/image-edit.php @@ -902,10 +902,6 @@ function wp_restore_image( $post_id ) { * @return stdClass */ function wp_save_image( $post_id ) { - require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php'; - - $wp_site_icon = new WP_Site_Icon(); - $_wp_site_icon_sizes = $wp_site_icon->additional_sizes(); $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $return = new stdClass(); @@ -977,18 +973,6 @@ function wp_save_image( $post_id ) { $backup_sizes = array(); } - // Check if the image is a site icon. - $site_icon_sizes = array( 'site_icon-32', 'site_icon-180', 'site_icon-192', 'site_icon-270' ); - $is_site_icon_image = false; - if ( isset( $meta['sizes'] ) && is_array( $meta['sizes'] ) ) { - foreach ( $site_icon_sizes as $site_icon_size ) { - if ( array_key_exists( $site_icon_size, $meta['sizes'] ) ) { - $is_site_icon_image = true; - break; - } - } - } - // Generate new filename. $path = get_attached_file( $post_id ); @@ -1131,9 +1115,22 @@ function wp_save_image( $post_id ) { ); } - if ( $is_site_icon_image && ! empty( $_wp_site_icon_sizes ) ) { - foreach ( $_wp_site_icon_sizes as $size => $size_data ) { - $_sizes[ $size ] = $size_data; + /** + * Add additional image sizes for the Site Icon during image editing. + * + * If the current attachment is the Site Icon, include the custom site icon sizes + * defined by WP_Site_Icon to ensure proper resizing and metadata generation. + */ + if ( (int) $post_id == (int) get_option( 'site_icon' ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php'; + + $wp_site_icon = new WP_Site_Icon(); + $_wp_site_icon_sizes = $wp_site_icon->additional_sizes(); + + if ( ! empty( $_wp_site_icon_sizes ) ) { + foreach ( $_wp_site_icon_sizes as $size => $size_data ) { + $_sizes[ $size ] = $size_data; + } } } From aed806a9a0c68e2419446c8f662500103c052015 Mon Sep 17 00:00:00 2001 From: Nikunj Hatkar Date: Fri, 23 May 2025 09:58:23 +0530 Subject: [PATCH 3/3] Make PHPCS happy --- src/wp-admin/includes/image-edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wp-admin/includes/image-edit.php b/src/wp-admin/includes/image-edit.php index 11f13ce844889..2866074331eb3 100644 --- a/src/wp-admin/includes/image-edit.php +++ b/src/wp-admin/includes/image-edit.php @@ -1121,7 +1121,7 @@ function wp_save_image( $post_id ) { * If the current attachment is the Site Icon, include the custom site icon sizes * defined by WP_Site_Icon to ensure proper resizing and metadata generation. */ - if ( (int) $post_id == (int) get_option( 'site_icon' ) ) { + if ( (int) get_option( 'site_icon' ) === (int) $post_id ) { require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php'; $wp_site_icon = new WP_Site_Icon();