WP_Theme_JSON::remove_insecure_element_stylesprotected staticWP 6.8.0

Remove insecure element styles within a variation or block.

  • When responsive media queries are provided, nested responsive state styles matching those viewport state keys are re-added after the base sanitization pass.

Method of the class: WP_Theme_JSON{}

No Hooks.

Returns

Array. The sanitized elements styles.

Usage

$result = WP_Theme_JSON::remove_insecure_element_styles( $elements, $responsive_media_queries );
$elements(array) (required)
The elements to process.
$responsive_media_queries(array|null)
Media queries whose keys define allowed viewport states.
Default: null

Changelog

Since 6.8.0 Introduced.
Since 7.1.0 Added the $responsive_media_queries parameter.

WP_Theme_JSON::remove_insecure_element_styles() code WP 7.1

protected static function remove_insecure_element_styles( $elements, $responsive_media_queries = null ) {
	$sanitized           = array();
	$valid_element_names = array_keys( static::ELEMENTS );

	foreach ( $valid_element_names as $element_name ) {
		$element_input = $elements[ $element_name ] ?? null;
		if ( $element_input ) {
			$element_output = static::remove_insecure_styles( $element_input );

			if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) {
				foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) {
					if ( isset( $element_input[ $pseudo_selector ] ) ) {
						$element_output[ $pseudo_selector ] = static::remove_insecure_styles( $element_input[ $pseudo_selector ] );
					}
				}
			}

			if ( null !== $responsive_media_queries ) {
				// Re-add and process responsive breakpoint styles for elements.
				foreach ( array_keys( $responsive_media_queries ) as $breakpoint ) {
					if ( isset( $element_input[ $breakpoint ] ) ) {
						$element_output[ $breakpoint ] = static::remove_insecure_styles( $element_input[ $breakpoint ] );

						if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) {
							foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) {
								if ( isset( $element_input[ $breakpoint ][ $pseudo_selector ] ) ) {
									$element_output[ $breakpoint ][ $pseudo_selector ] = static::remove_insecure_styles( $element_input[ $breakpoint ][ $pseudo_selector ] );
								}
							}
						}
					}
				}
			}

			$sanitized[ $element_name ] = $element_output;
		}
	}
	return $sanitized;
}