From 39a648899b2d8128714a5184d884696027509ab8 Mon Sep 17 00:00:00 2001 From: Mukesh Panchal Date: Fri, 12 Jun 2026 10:07:09 +0530 Subject: [PATCH 1/2] Fix equal column gallery image sizes --- .../includes/improve-calculate-sizes.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/plugins/auto-sizes/includes/improve-calculate-sizes.php b/plugins/auto-sizes/includes/improve-calculate-sizes.php index 027f4d1013..47498dc5ea 100644 --- a/plugins/auto-sizes/includes/improve-calculate-sizes.php +++ b/plugins/auto-sizes/includes/improve-calculate-sizes.php @@ -316,6 +316,7 @@ function auto_sizes_filter_uses_context( array $uses_context, WP_Block_Type $blo 'core/group' => array( 'max_alignment' ), 'core/columns' => array( 'max_alignment', 'column_count', 'container_relative_width' ), 'core/column' => array( 'max_alignment' ), + 'core/gallery' => array( 'max_alignment', 'gallery_column_count', 'container_relative_width' ), ); if ( isset( $block_specific_context[ $block_type->name ] ) ) { @@ -344,6 +345,7 @@ function auto_sizes_filter_render_block_context( array $context, array $block, ? 'core/columns', 'core/group', 'core/post-featured-image', + 'core/gallery', ); if ( in_array( $block['blockName'], $provider_blocks, true ) ) { @@ -355,6 +357,28 @@ function auto_sizes_filter_render_block_context( array $context, array $block, ? $context['max_alignment'] = $constraints[ $context['max_alignment'] ] > $constraints[ $alignment ] ? $context['max_alignment'] : $alignment; } + if ( 'core/gallery' === $block['blockName'] ) { + $context['gallery_column_count'] = $block['attrs']['columns'] ?? 3; + } + + if ( 'core/image' === $block['blockName'] ) { + $current_width = 1.0; + if ( isset( $parent_block->context['gallery_column_count'] ) && $parent_block->context['gallery_column_count'] ) { + // Default to equally divided width if not explicitly set. + $current_width = $current_width / $parent_block->context['gallery_column_count']; + } + + // Multiply with parent's width if available. + if ( + isset( $parent_block->context['container_relative_width'] ) && + ( $current_width > 0.0 || $current_width < 1.0 ) + ) { + $context['container_relative_width'] = $parent_block->context['container_relative_width'] * $current_width; + } else { + $context['container_relative_width'] = $current_width; + } + } + if ( 'core/columns' === $block['blockName'] ) { // This is a special context key just to pass to the child 'core/column' block. $context['column_count'] = count( $block['innerBlocks'] ); From de04562be57196b911f04b4bf75bcdb73f487c56 Mon Sep 17 00:00:00 2001 From: Mukesh Panchal Date: Fri, 12 Jun 2026 10:56:12 +0530 Subject: [PATCH 2/2] Set column count for image without columns set --- .../includes/improve-calculate-sizes.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/auto-sizes/includes/improve-calculate-sizes.php b/plugins/auto-sizes/includes/improve-calculate-sizes.php index 47498dc5ea..29dc455a8c 100644 --- a/plugins/auto-sizes/includes/improve-calculate-sizes.php +++ b/plugins/auto-sizes/includes/improve-calculate-sizes.php @@ -358,7 +358,19 @@ function auto_sizes_filter_render_block_context( array $context, array $block, ? } if ( 'core/gallery' === $block['blockName'] ) { - $context['gallery_column_count'] = $block['attrs']['columns'] ?? 3; + // Get column count, if explicitly set. + if ( isset( $block['attrs']['columns'] ) && '' !== $block['attrs']['columns'] ) { + $context['gallery_column_count'] = $block['attrs']['columns'] ?? ''; + } + + /* + * If column count is not explicitly set, use the number of inner blocks as a fallback, + * but only for up to 3 images to avoid incorrect context for larger galleries. + */ + $gallery_image_block_count = count( $block['innerBlocks'] ); + if ( $gallery_image_block_count <= 3 ) { + $context['gallery_column_count'] = $gallery_image_block_count; + } } if ( 'core/image' === $block['blockName'] ) {