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 8b92150cbef8f..87e32727a434e 100644
--- a/src/wp-includes/html-api/class-wp-css-selectors.php
+++ b/src/wp-includes/html-api/class-wp-css-selectors.php
@@ -871,6 +871,12 @@ private function whitespace_delimited_list( string $input ): Generator {
*/
public $modifier;
+ /**
+ * @param string $name
+ * @param null|self::MATCH_* $matcher
+ * @param null|string $value
+ * @param null|self::MODIFIER_* $modifier
+ */
private function __construct( string $name, ?string $matcher = null, ?string $value = null, ?string $modifier = null ) {
$this->name = $name;
$this->matcher = $matcher;
@@ -1092,19 +1098,20 @@ private static function parse_subclass_selector( string $input, int &$offset ) {
/**
* This corresponds to in the grammar.
*
- * > = [ ? ]*
+ * > = [ ? ] *
*/
final class WP_CSS_Complex_Selector extends WP_CSS_Selector_Parser implements IWP_CSS_Selector_Parser, IWP_CSS_Selector_Matcher {
public function matches( WP_HTML_Processor $processor ): bool {
- if ( count( $this->selectors ) === 1 ) {
- return $this->selectors[0]->matches( $processor );
- }
-
// First selector must match this location.
if ( ! $this->selectors[0]->matches( $processor ) ) {
return false;
}
+ if ( count( $this->selectors ) === 1 ) {
+ return true;
+ }
+
+ /** @var array $breadcrumbs */
$breadcrumbs = array_slice( array_reverse( $processor->get_breadcrumbs() ), 1 );
$selectors = array_slice( $this->selectors, 1 );
return $this->explore_matches( $selectors, $breadcrumbs );