wp_add_block_state_style_rule()WP 7.1.0

Adds a compiled state style rule to a rule list.

No Hooks.

Returns

null. Nothing (null).

Usage

wp_add_block_state_style_rule( $css_rules, $state, $selector, $style, $rules_group );
$css_rules(array) (required) (passed by reference — &)
Style rules.
$state(string) (required)
Pseudo-state selector.
$selector(string|null) (required)
Block, feature, or element selector.
$style(array) (required)
Style object.
$rules_group(string|null)
Optional CSS grouping rule, e.g. a media query.
Default: null

Changelog

Since 7.1.0 Introduced.

wp_add_block_state_style_rule() code WP 7.1

function wp_add_block_state_style_rule( &$css_rules, $state, $selector, $style, $rules_group = null ) {
	if ( empty( $style ) || ! is_array( $style ) ) {
		return;
	}

	$compiled     = wp_style_engine_get_styles(
		wp_normalize_state_style_for_css_output( $style )
	);
	$declarations = $compiled['declarations'] ?? array();
	$text_align   = $style['typography']['textAlign'] ?? null;
	// Base text alignment is class-based, so state styles need a declaration.
	if ( is_string( $text_align ) && '' !== trim( $text_align ) ) {
		$declarations['text-align'] = $text_align;
	}

	if ( empty( $declarations ) ) {
		return;
	}

	$css_rules[] = array(
		'state'        => $state,
		'selector'     => $selector,
		'declarations' => $declarations,
	);
	if ( ! empty( $rules_group ) ) {
		$css_rules[ count( $css_rules ) - 1 ]['rules_group'] = $rules_group;
	}
}