Edit File by line
/home/zeestwma/ceyloniy.../wp-inclu...
File: style-engine.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Style engine: Public functions
[2] Fix | Delete
*
[3] Fix | Delete
* This file contains a variety of public functions developers can use to interact with
[4] Fix | Delete
* the Style Engine API.
[5] Fix | Delete
*
[6] Fix | Delete
* @package WordPress
[7] Fix | Delete
* @subpackage StyleEngine
[8] Fix | Delete
* @since 6.1.0
[9] Fix | Delete
*/
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Global public interface method to generate styles from a single style object,
[13] Fix | Delete
* e.g. the value of a block's attributes.style object or the top level styles in theme.json.
[14] Fix | Delete
*
[15] Fix | Delete
* Example usage:
[16] Fix | Delete
*
[17] Fix | Delete
* $styles = wp_style_engine_get_styles(
[18] Fix | Delete
* array(
[19] Fix | Delete
* 'color' => array( 'text' => '#cccccc' ),
[20] Fix | Delete
* )
[21] Fix | Delete
* );
[22] Fix | Delete
*
[23] Fix | Delete
* Returns:
[24] Fix | Delete
*
[25] Fix | Delete
* array(
[26] Fix | Delete
* 'css' => 'color: #cccccc',
[27] Fix | Delete
* 'declarations' => array( 'color' => '#cccccc' ),
[28] Fix | Delete
* 'classnames' => 'has-color',
[29] Fix | Delete
* )
[30] Fix | Delete
*
[31] Fix | Delete
* @since 6.1.0
[32] Fix | Delete
*
[33] Fix | Delete
* @see https://developer.wordpress.org/block-editor/reference-guides/theme-json-reference/theme-json-living/#styles
[34] Fix | Delete
* @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/
[35] Fix | Delete
*
[36] Fix | Delete
* @param array $block_styles The style object.
[37] Fix | Delete
* @param array $options {
[38] Fix | Delete
* Optional. An array of options. Default empty array.
[39] Fix | Delete
*
[40] Fix | Delete
* @type string|null $context An identifier describing the origin of the style object,
[41] Fix | Delete
* e.g. 'block-supports' or 'global-styles'. Default null.
[42] Fix | Delete
* When set, the style engine will attempt to store the CSS rules,
[43] Fix | Delete
* where a selector is also passed.
[44] Fix | Delete
* @type bool $convert_vars_to_classnames Whether to skip converting incoming CSS var patterns,
[45] Fix | Delete
* e.g. `var:preset|<PRESET_TYPE>|<PRESET_SLUG>`,
[46] Fix | Delete
* to `var( --wp--preset--* )` values. Default false.
[47] Fix | Delete
* @type string $selector Optional. When a selector is passed,
[48] Fix | Delete
* the value of `$css` in the return value will comprise
[49] Fix | Delete
* a full CSS rule `$selector { ...$css_declarations }`,
[50] Fix | Delete
* otherwise, the value will be a concatenated string
[51] Fix | Delete
* of CSS declarations.
[52] Fix | Delete
* }
[53] Fix | Delete
* @return array {
[54] Fix | Delete
* @type string $css A CSS ruleset or declarations block
[55] Fix | Delete
* formatted to be placed in an HTML `style` attribute or tag.
[56] Fix | Delete
* @type string[] $declarations An associative array of CSS definitions,
[57] Fix | Delete
* e.g. `array( "$property" => "$value", "$property" => "$value" )`.
[58] Fix | Delete
* @type string $classnames Classnames separated by a space.
[59] Fix | Delete
* }
[60] Fix | Delete
*/
[61] Fix | Delete
function wp_style_engine_get_styles( $block_styles, $options = array() ) {
[62] Fix | Delete
$options = wp_parse_args(
[63] Fix | Delete
$options,
[64] Fix | Delete
array(
[65] Fix | Delete
'selector' => null,
[66] Fix | Delete
'context' => null,
[67] Fix | Delete
'convert_vars_to_classnames' => false,
[68] Fix | Delete
)
[69] Fix | Delete
);
[70] Fix | Delete
[71] Fix | Delete
$parsed_styles = WP_Style_Engine::parse_block_styles( $block_styles, $options );
[72] Fix | Delete
[73] Fix | Delete
// Output.
[74] Fix | Delete
$styles_output = array();
[75] Fix | Delete
[76] Fix | Delete
if ( ! empty( $parsed_styles['declarations'] ) ) {
[77] Fix | Delete
$styles_output['css'] = WP_Style_Engine::compile_css( $parsed_styles['declarations'], $options['selector'] );
[78] Fix | Delete
$styles_output['declarations'] = $parsed_styles['declarations'];
[79] Fix | Delete
if ( ! empty( $options['context'] ) ) {
[80] Fix | Delete
WP_Style_Engine::store_css_rule( $options['context'], $options['selector'], $parsed_styles['declarations'] );
[81] Fix | Delete
}
[82] Fix | Delete
}
[83] Fix | Delete
[84] Fix | Delete
if ( ! empty( $parsed_styles['classnames'] ) ) {
[85] Fix | Delete
$styles_output['classnames'] = implode( ' ', array_unique( $parsed_styles['classnames'] ) );
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
return array_filter( $styles_output );
[89] Fix | Delete
}
[90] Fix | Delete
[91] Fix | Delete
/**
[92] Fix | Delete
* Returns compiled CSS from a collection of selectors and declarations.
[93] Fix | Delete
* Useful for returning a compiled stylesheet from any collection of CSS selector + declarations.
[94] Fix | Delete
*
[95] Fix | Delete
* Example usage:
[96] Fix | Delete
*
[97] Fix | Delete
* $css_rules = array(
[98] Fix | Delete
* array(
[99] Fix | Delete
* 'selector' => '.elephant-are-cool',
[100] Fix | Delete
* 'declarations' => array(
[101] Fix | Delete
* 'color' => 'gray',
[102] Fix | Delete
* 'width' => '3em',
[103] Fix | Delete
* ),
[104] Fix | Delete
* ),
[105] Fix | Delete
* );
[106] Fix | Delete
*
[107] Fix | Delete
* $css = wp_style_engine_get_stylesheet_from_css_rules( $css_rules );
[108] Fix | Delete
*
[109] Fix | Delete
* Returns:
[110] Fix | Delete
*
[111] Fix | Delete
* .elephant-are-cool{color:gray;width:3em}
[112] Fix | Delete
*
[113] Fix | Delete
* @since 6.1.0
[114] Fix | Delete
* @since 6.6.0 Added support for `$rules_group` in the `$css_rules` array.
[115] Fix | Delete
*
[116] Fix | Delete
* @param array $css_rules {
[117] Fix | Delete
* Required. A collection of CSS rules.
[118] Fix | Delete
*
[119] Fix | Delete
* @type array ...$0 {
[120] Fix | Delete
* @type string $rules_group A parent CSS selector in the case of nested CSS,
[121] Fix | Delete
* or a CSS nested @rule, such as `@media (min-width: 80rem)` or `@layer module`.
[122] Fix | Delete
* @type string $selector A CSS selector.
[123] Fix | Delete
* @type string[] $declarations An associative array of CSS definitions,
[124] Fix | Delete
* e.g. `array( "$property" => "$value", "$property" => "$value" )`.
[125] Fix | Delete
* }
[126] Fix | Delete
* }
[127] Fix | Delete
* @param array $options {
[128] Fix | Delete
* Optional. An array of options. Default empty array.
[129] Fix | Delete
*
[130] Fix | Delete
* @type string|null $context An identifier describing the origin of the style object,
[131] Fix | Delete
* e.g. 'block-supports' or 'global-styles'. Default 'block-supports'.
[132] Fix | Delete
* When set, the style engine will attempt to store the CSS rules.
[133] Fix | Delete
* @type bool $optimize Whether to optimize the CSS output, e.g. combine rules.
[134] Fix | Delete
* Default false.
[135] Fix | Delete
* @type bool $prettify Whether to add new lines and indents to output.
[136] Fix | Delete
* Defaults to whether the `SCRIPT_DEBUG` constant is defined.
[137] Fix | Delete
* }
[138] Fix | Delete
* @return string A string of compiled CSS declarations, or empty string.
[139] Fix | Delete
*/
[140] Fix | Delete
function wp_style_engine_get_stylesheet_from_css_rules( $css_rules, $options = array() ) {
[141] Fix | Delete
if ( empty( $css_rules ) ) {
[142] Fix | Delete
return '';
[143] Fix | Delete
}
[144] Fix | Delete
[145] Fix | Delete
$options = wp_parse_args(
[146] Fix | Delete
$options,
[147] Fix | Delete
array(
[148] Fix | Delete
'context' => null,
[149] Fix | Delete
)
[150] Fix | Delete
);
[151] Fix | Delete
[152] Fix | Delete
$css_rule_objects = array();
[153] Fix | Delete
foreach ( $css_rules as $css_rule ) {
[154] Fix | Delete
if ( empty( $css_rule['selector'] ) || empty( $css_rule['declarations'] ) || ! is_array( $css_rule['declarations'] ) ) {
[155] Fix | Delete
continue;
[156] Fix | Delete
}
[157] Fix | Delete
[158] Fix | Delete
$rules_group = $css_rule['rules_group'] ?? null;
[159] Fix | Delete
if ( ! empty( $options['context'] ) ) {
[160] Fix | Delete
WP_Style_Engine::store_css_rule( $options['context'], $css_rule['selector'], $css_rule['declarations'], $rules_group );
[161] Fix | Delete
}
[162] Fix | Delete
[163] Fix | Delete
$css_rule_objects[] = new WP_Style_Engine_CSS_Rule( $css_rule['selector'], $css_rule['declarations'], $rules_group );
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
if ( empty( $css_rule_objects ) ) {
[167] Fix | Delete
return '';
[168] Fix | Delete
}
[169] Fix | Delete
[170] Fix | Delete
return WP_Style_Engine::compile_stylesheet_from_css_rules( $css_rule_objects, $options );
[171] Fix | Delete
}
[172] Fix | Delete
[173] Fix | Delete
/**
[174] Fix | Delete
* Returns compiled CSS from a store, if found.
[175] Fix | Delete
*
[176] Fix | Delete
* @since 6.1.0
[177] Fix | Delete
*
[178] Fix | Delete
* @param string $context A valid context name, corresponding to an existing store key.
[179] Fix | Delete
* @param array $options {
[180] Fix | Delete
* Optional. An array of options. Default empty array.
[181] Fix | Delete
*
[182] Fix | Delete
* @type bool $optimize Whether to optimize the CSS output, e.g. combine rules.
[183] Fix | Delete
* Default false.
[184] Fix | Delete
* @type bool $prettify Whether to add new lines and indents to output.
[185] Fix | Delete
* Defaults to whether the `SCRIPT_DEBUG` constant is defined.
[186] Fix | Delete
* }
[187] Fix | Delete
* @return string A compiled CSS string.
[188] Fix | Delete
*/
[189] Fix | Delete
function wp_style_engine_get_stylesheet_from_context( $context, $options = array() ) {
[190] Fix | Delete
return WP_Style_Engine::compile_stylesheet_from_css_rules( WP_Style_Engine::get_store( $context )->get_all_rules(), $options );
[191] Fix | Delete
}
[192] Fix | Delete
[193] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function