diff --git a/src/wp-includes/html-api/class-wp-css-selectors.php b/src/wp-includes/html-api/class-wp-css-selectors.php
index bc28cfaa4f20e..974c56e6581ff 100644
--- a/src/wp-includes/html-api/class-wp-css-selectors.php
+++ b/src/wp-includes/html-api/class-wp-css-selectors.php
@@ -1071,6 +1071,19 @@ private function explore_matches( array $selectors, array $breadcrumbs ): bool {
return $this->explore_matches( $selectors, array_slice( $breadcrumbs, 1 ) );
case self::COMBINATOR_DESCENDANT:
+ $ident = $selector->type_selector->ident;
+
+ // Find _all_ the breadcrumbs that match and recurse from each of them.
+ for ( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
+ if ( '*' === $selector->type_selector->ident || strcasecmp( $breadcrumbs[ $i ], $selector->type_selector->ident ) === 0 ) {
+ $next_crumbs = array_slice( $breadcrumbs, $i + 1 );
+ if ( $this->explore_matches( array_slice( $selectors, 2 ), $next_crumbs ) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+
default:
throw new Exception( "Combinator '{$combinator}' is not supported yet." );
}