Commit 6ce371f09c7 for woocommerce

commit 6ce371f09c7d576e92a9a0b689e10098aaca78b6
Author: Albert Juhé Lluveras <contact@albertjuhe.com>
Date:   Thu May 14 09:21:17 2026 +0200

    Fix Show more button in filter blocks being visible when it was not necessary (#64798)

    * Fix Show more button in filter blocks being visible when it was not necessary

    * Add changelog

    * Make sure overflow selected items are SSR

diff --git a/plugins/woocommerce/changelog/fix-rsm-2894-filter-blocks-show-more-visible b/plugins/woocommerce/changelog/fix-rsm-2894-filter-blocks-show-more-visible
new file mode 100644
index 00000000000..7f483ea8d49
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-rsm-2894-filter-blocks-show-more-visible
@@ -0,0 +1,5 @@
+Significance: patch
+Type: fix
+Comment: Fix Show more button in filter blocks being visible when it was not necessary
+
+
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterCheckboxList.php b/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterCheckboxList.php
index 24387b3e96f..c5561e88bed 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterCheckboxList.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterCheckboxList.php
@@ -72,17 +72,20 @@ final class ProductFilterCheckboxList extends AbstractBlock {

 		$checkbox_svg = '<svg class="wc-block-product-filter-checkbox-list__mark" viewBox="0 0 10 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.25 1.19922L3.75 6.69922L1 3.94922" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>';

-		$star_path      = '<path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>';
-		$stars_svg      = sprintf(
+		$star_path               = '<path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>';
+		$stars_svg               = sprintf(
 			'<svg class="wc-block-product-filter-checkbox-list__stars-svg" width="120" height="24" viewBox="0 0 120 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">%1$s<g transform="translate(24, 0)">%1$s</g><g transform="translate(48, 0)">%1$s</g><g transform="translate(72, 0)">%1$s</g><g transform="translate(96, 0)">%1$s</g></svg>',
 			$star_path
 		);
-		$visible_items  = array_slice( $items, 0, $display_limit, true );
-		$has_more_items = count( $items ) > count( $visible_items );
-		$hidden_count   = max( 0, count( $items ) - count( $visible_items ) );
-		$first_item     = reset( $items );
-		$show_counts    = is_array( $first_item ) && array_key_exists( 'count', $first_item );
-		$has_colors     = is_array( $first_item ) && array_key_exists( 'color', $first_item );
+		$first_items             = array_slice( $items, 0, $display_limit, true );
+		$overflow_items          = array_slice( $items, $display_limit );
+		$overflow_selected_items = array_filter( $overflow_items, fn( $item ) => is_array( $item ) && ! empty( $item['selected'] ) );
+		$visible_items           = array_merge( $first_items, $overflow_selected_items );
+		$hidden_count            = count( $items ) - count( $visible_items );
+
+		$first_item  = reset( $items );
+		$show_counts = is_array( $first_item ) && array_key_exists( 'count', $first_item );
+		$has_colors  = is_array( $first_item ) && array_key_exists( 'color', $first_item );

 		ob_start();
 		?>
@@ -218,7 +221,7 @@ final class ProductFilterCheckboxList extends AbstractBlock {
 						</div>
 					</template>
 				</div>
-				<?php if ( $has_more_items ) : ?>
+				<?php if ( $hidden_count > 0 ) : ?>
 					<div class="wc-block-product-filter-checkbox-list__show-more">
 						<button
 							type="button"
diff --git a/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterChips.php b/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterChips.php
index 9f32265dcbd..3d6adddff27 100644
--- a/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterChips.php
+++ b/plugins/woocommerce/src/Blocks/BlockTypes/ProductFilterChips.php
@@ -68,9 +68,12 @@ final class ProductFilterChips extends AbstractBlock {
 			$wrapper_attributes['style'] = esc_attr( $style ) . ';';
 		}

-		$visible_items      = array_slice( $items, 0, $display_limit, true );
-		$has_more_items     = count( $items ) > count( $visible_items );
-		$hidden_count       = max( 0, count( $items ) - count( $visible_items ) );
+		$first_items             = array_slice( $items, 0, $display_limit, true );
+		$overflow_items          = array_slice( $items, $display_limit );
+		$overflow_selected_items = array_filter( $overflow_items, fn( $item ) => is_array( $item ) && ! empty( $item['selected'] ) );
+		$visible_items           = array_merge( $first_items, $overflow_selected_items );
+		$hidden_count            = count( $items ) - count( $visible_items );
+
 		$first_item         = reset( $items );
 		$show_counts        = is_array( $first_item ) && array_key_exists( 'count', $first_item );
 		$has_color_swatches = is_array( $first_item ) && array_key_exists( 'color', $first_item );
@@ -172,7 +175,7 @@ final class ProductFilterChips extends AbstractBlock {
 						</button>
 					</template>
 				</div>
-				<?php if ( $has_more_items ) : ?>
+				<?php if ( $hidden_count > 0 ) : ?>
 					<button
 						type="button"
 						class="wc-block-product-filter-chips__show-more"