wp_style_engine_get_stylesheet_from_css_rules( array $css_rules, array $options = array() ): string

Returns compiled CSS from a collection of selectors and declarations.

Description

Useful for returning a compiled stylesheet from any collection of CSS selector + declarations.

Example usage:

$css_rules = array(
    array(
        'selector'     => '.elephant-are-cool',
        'declarations' => array(
            'color' => 'gray',
            'width' => '3em',
        ),
    ),
);

$css = wp_style_engine_get_stylesheet_from_css_rules( $css_rules );

Returns:

.elephant-are-cool{color:gray;width:3em}

Parameters

$css_rulesarrayrequired
Required. A collection of CSS rules.
  • ...$0 array
    • rules_group string
      A parent CSS selector in the case of nested CSS, or a CSS nested @rule, such as @media (min-width: 80rem) or @layer module.
    • selector string
      A CSS selector.
    • declarations string[]|WP_Style_Engine_CSS_Declarations
      An associative array of CSS definitions, e.g. array( "$property" => "$value", "$property" => "$value" ), or a WP_Style_Engine_CSS_Declarations object.
    $optionsarrayoptional
    An array of options.
    • context string|null
      An identifier describing the origin of the style object, e.g. 'block-supports' or 'global-styles'. Default 'block-supports'.
      When set, the style engine will attempt to store the CSS rules.
    • optimize bool
      Whether to optimize the CSS output, e.g. combine rules.
      Default false.
    • prettify bool
      Whether to add new lines and indents to output.
      Defaults to whether the SCRIPT_DEBUG constant is defined.

    Default:array()

    Return

    string A string of compiled CSS declarations, or empty string.

    Source

    function wp_style_engine_get_stylesheet_from_css_rules( $css_rules, $options = array() ) {
    	if ( empty( $css_rules ) ) {
    		return '';
    	}
    
    	$options = wp_parse_args(
    		$options,
    		array(
    			'context' => null,
    		)
    	);
    
    	$css_rule_objects = array();
    	foreach ( $css_rules as $css_rule ) {
    		$declarations = $css_rule['declarations'] ?? null;
    		if (
    			empty( $css_rule['selector'] ) ||
    			empty( $declarations ) ||
    			( ! is_array( $declarations ) && ! $declarations instanceof WP_Style_Engine_CSS_Declarations )
    		) {
    			continue;
    		}
    
    		$rules_group = $css_rule['rules_group'] ?? null;
    		if ( ! empty( $options['context'] ) ) {
    			WP_Style_Engine::store_css_rule( $options['context'], $css_rule['selector'], $declarations, $rules_group );
    		}
    
    		$css_rule_objects[] = new WP_Style_Engine_CSS_Rule( $css_rule['selector'], $declarations, $rules_group );
    	}
    
    	if ( empty( $css_rule_objects ) ) {
    		return '';
    	}
    
    	return WP_Style_Engine::compile_stylesheet_from_css_rules( $css_rule_objects, $options );
    }
    

    Changelog

    VersionDescription
    7.1.0Extended declarations in $css_rules array to accept WP_Style_Engine_CSS_Declarations object.
    6.6.0Added support for $rules_group in the $css_rules array.
    6.1.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.

Sponsor
SponsoredKunjungi sekarang
Promo