wpseek.com
A WordPress-centric search engine for devs and theme authors



wp_get_block_state_element_selectors › WordPress Function

Since7.1.0
Deprecatedn/a
wp_get_block_state_element_selectors ( $root_selector )
Parameters:
  • (string) $root_selector The block root CSS selector.
    Required: Yes
Returns:
  • (string[]) Element selectors keyed by element name.
Defined at:
Codex:

Generates all element selectors for a block root selector.



Source

function wp_get_block_state_element_selectors( $root_selector ) {
	if ( ! is_string( $root_selector ) || '' === trim( $root_selector ) ) {
		return array();
	}

	$block_selectors   = wp_split_selector_list( $root_selector );
	$element_selectors = array();

	foreach ( WP_Theme_JSON::ELEMENTS as $element_name => $element_selector ) {
		$selectors = array();

		foreach ( $block_selectors as $block_selector ) {
			$block_selector = trim( $block_selector );
			if ( '' === $block_selector ) {
				continue;
			}

			if ( $block_selector === $element_selector ) {
				$selectors = array( $element_selector );
				break;
			}

			$selector_prefix = "$block_selector ";
			if ( ! str_contains( $element_selector, ',' ) ) {
				$selectors[] = $selector_prefix . $element_selector;
				continue;
			}

			$prepended_selectors = array();
			foreach ( wp_split_selector_list( $element_selector ) as $selector ) {
				$prepended_selectors[] = $selector_prefix . $selector;
			}
			$selectors[] = implode( ',', $prepended_selectors );
		}

		if ( ! empty( $selectors ) ) {
			$element_selectors[ $element_name ] = implode( ',', $selectors );
		}
	}

	return $element_selectors;
}