wp_style_engine_get_stylesheet_from_css_rules( array $css_rules, array $options = array() ): string
- Since
- 6.1.0, 6.6.0, 7.1.0
- Source
wp-includes/style-engine.php:144
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}Compatibility
- WordPress
- since 7.1.0
- PHP
- 7.4–8.6-dev
- 6.7.7
- 6.8.8
- 6.9.7
- 7.0.4
- 7.1.0
Present in every tracked release (6.7.7 to 7.1.0), and compiles on PHP 7.4 through 8.6-dev.
Parameters
$css_rulesarray- Required. A collection of CSS rules. @type array ...$0 { @type string $rules_group A parent CSS selector in the case of nested CSS, or a CSS nested @rule, such as
@media (min-width: 80rem)or@layer module.$selectorstringA CSS selector.$declarationsstring[]|WP_Style_Engine_CSS_DeclarationsAn 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. Default empty array.Default:
array()$contextstring|nulldefault: 'block-supports'. When set, the style engine will attempt to store the CSS rulesAn identifier describing the origin of the style object, e.g. 'block-supports' or 'global-styles'.$optimizebooldefault: falseWhether to optimize the CSS output, e.g. combine rules.$prettifyboolWhether to add new lines and indents to output. Defaults to whether theSCRIPT_DEBUGconstant is defined.
Return value
string- A string of compiled CSS declarations, or empty string.
Performance profile
How much work a call to wp_style_engine_get_stylesheet_from_css_rules() does, and what it touches: the algorithmic scaling, the Zend instruction count per call across PHP versions, the hooks it hands control to, and the core code that calls it. Measured from the compiled opcodes, not a stopwatch, so every number is identical on any machine running the same PHP version, and every function in core is ranked by cost.
- Cost class
- Light
- Scaling
- Scales with input
- Instructions
- 5–20
- Plugin surface
- None
- Called by
- 9
Touches nothing outside its own arguments.
The body loops, so the work grows with what you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 60.
Nothing here hands control to plugin code.
9 places in core call this, so the cost is paid more often than your own code shows.
What one call costs · 3 distinct outcomes
One number would be a lie: the work depends on which branch runs. These are every distinct cost wp_style_engine_get_stylesheet_from_css_rules() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
empty($css_rules) | 5 | none |
!empty($css_rules) && empty($css_rule_objects) | 15–16 | wp_parse_args() |
!empty($css_rules) && !empty($css_rule_objects) | 19–20 | wp_parse_args(), ::WP_Style_Engine() |
Across PHP versions
Compiles the same on PHP 7.4, 8.1, 8.2, 8.3, 8.4, 8.5 and 8.6-dev: 60 instructions, 5–20 executed per call, 11 branches. The work does not change between versions.
An instruction is not a fixed amount of time, so a matching count is not necessarily the same speed; what it rules out is a difference in the work itself.
Uses · 4
- wp_parse_args()Merges user defined arguments into defaults array.
- WP_Style_Engine::store_css_rule()Stores a CSS rule using the provided CSS selector and CSS declarations.
- WP_Style_Engine_CSS_Rule::__construct()Constructor.
- WP_Style_Engine::compile_stylesheet_from_css_rules()Returns a compiled stylesheet from stored CSS rules.
Used by · 9
- WP_Duotone::output_block_styles()Appends the used block duotone filter declarations to the inline block supports CSS.
- WP_Duotone::output_footer_assets()Outputs all necessary SVG for duotone filters, CSS for classic themes.
- block_core_gallery_render()Renders the `core/gallery` block on the server.
- block_core_navigation_add_support_classes_to_container()Adds Navigation block support classes to inner list containers.
- wp_get_layout_style()Generates the CSS corresponding to the provided layout.
- wp_render_block_states_support()Renders per-instance state styles on the frontend.
- wp_render_block_visibility_support()Render nothing if the block is hidden, or add viewport visibility styles.
- wp_render_layout_support_flag()Renders the layout config to the block wrapper.
- wp_render_position_support()Renders position styles to the block wrapper.
Source code
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
Introduced in 6.1.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
declarations in $css_rules array to accept WP_Style_Engine_CSS_Declarations object.from the docblock$rules_group in the $css_rules array.from the docblockAbout this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/style-engine.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.