Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu...
File: class-wp-theme-json.php
* @type float $increment The value used with the operator to generate the other sizes.
[4000] Fix | Delete
* }
[4001] Fix | Delete
* @return array The spacing sizes presets or an empty array if some spacing scale values are missing or invalid.
[4002] Fix | Delete
*/
[4003] Fix | Delete
private static function compute_spacing_sizes( $spacing_scale ) {
[4004] Fix | Delete
/*
[4005] Fix | Delete
* This condition is intentionally missing some checks on ranges for the values in order to
[4006] Fix | Delete
* keep backwards compatibility with the previous implementation.
[4007] Fix | Delete
*/
[4008] Fix | Delete
if (
[4009] Fix | Delete
! isset( $spacing_scale['steps'] ) ||
[4010] Fix | Delete
! is_numeric( $spacing_scale['steps'] ) ||
[4011] Fix | Delete
0 === $spacing_scale['steps'] ||
[4012] Fix | Delete
! isset( $spacing_scale['mediumStep'] ) ||
[4013] Fix | Delete
! is_numeric( $spacing_scale['mediumStep'] ) ||
[4014] Fix | Delete
! isset( $spacing_scale['unit'] ) ||
[4015] Fix | Delete
! isset( $spacing_scale['operator'] ) ||
[4016] Fix | Delete
( '+' !== $spacing_scale['operator'] && '*' !== $spacing_scale['operator'] ) ||
[4017] Fix | Delete
! isset( $spacing_scale['increment'] ) ||
[4018] Fix | Delete
! is_numeric( $spacing_scale['increment'] )
[4019] Fix | Delete
) {
[4020] Fix | Delete
return array();
[4021] Fix | Delete
}
[4022] Fix | Delete
[4023] Fix | Delete
$unit = '%' === $spacing_scale['unit'] ? '%' : sanitize_title( $spacing_scale['unit'] );
[4024] Fix | Delete
$current_step = $spacing_scale['mediumStep'];
[4025] Fix | Delete
$steps_mid_point = round( $spacing_scale['steps'] / 2, 0 );
[4026] Fix | Delete
$x_small_count = null;
[4027] Fix | Delete
$below_sizes = array();
[4028] Fix | Delete
$slug = 40;
[4029] Fix | Delete
$remainder = 0;
[4030] Fix | Delete
[4031] Fix | Delete
for ( $below_midpoint_count = $steps_mid_point - 1; $spacing_scale['steps'] > 1 && $slug > 0 && $below_midpoint_count > 0; $below_midpoint_count-- ) {
[4032] Fix | Delete
if ( '+' === $spacing_scale['operator'] ) {
[4033] Fix | Delete
$current_step -= $spacing_scale['increment'];
[4034] Fix | Delete
} elseif ( $spacing_scale['increment'] > 1 ) {
[4035] Fix | Delete
$current_step /= $spacing_scale['increment'];
[4036] Fix | Delete
} else {
[4037] Fix | Delete
$current_step *= $spacing_scale['increment'];
[4038] Fix | Delete
}
[4039] Fix | Delete
[4040] Fix | Delete
if ( $current_step <= 0 ) {
[4041] Fix | Delete
$remainder = $below_midpoint_count;
[4042] Fix | Delete
break;
[4043] Fix | Delete
}
[4044] Fix | Delete
[4045] Fix | Delete
$below_sizes[] = array(
[4046] Fix | Delete
/* translators: %s: Digit to indicate multiple of sizing, eg. 2X-Small. */
[4047] Fix | Delete
'name' => $below_midpoint_count === $steps_mid_point - 1 ? __( 'Small' ) : sprintf( __( '%sX-Small' ), (string) $x_small_count ),
[4048] Fix | Delete
'slug' => (string) $slug,
[4049] Fix | Delete
'size' => round( $current_step, 2 ) . $unit,
[4050] Fix | Delete
);
[4051] Fix | Delete
[4052] Fix | Delete
if ( $below_midpoint_count === $steps_mid_point - 2 ) {
[4053] Fix | Delete
$x_small_count = 2;
[4054] Fix | Delete
}
[4055] Fix | Delete
[4056] Fix | Delete
if ( $below_midpoint_count < $steps_mid_point - 2 ) {
[4057] Fix | Delete
++$x_small_count;
[4058] Fix | Delete
}
[4059] Fix | Delete
[4060] Fix | Delete
$slug -= 10;
[4061] Fix | Delete
}
[4062] Fix | Delete
[4063] Fix | Delete
$below_sizes = array_reverse( $below_sizes );
[4064] Fix | Delete
[4065] Fix | Delete
$below_sizes[] = array(
[4066] Fix | Delete
'name' => __( 'Medium' ),
[4067] Fix | Delete
'slug' => '50',
[4068] Fix | Delete
'size' => $spacing_scale['mediumStep'] . $unit,
[4069] Fix | Delete
);
[4070] Fix | Delete
[4071] Fix | Delete
$current_step = $spacing_scale['mediumStep'];
[4072] Fix | Delete
$x_large_count = null;
[4073] Fix | Delete
$above_sizes = array();
[4074] Fix | Delete
$slug = 60;
[4075] Fix | Delete
$steps_above = ( $spacing_scale['steps'] - $steps_mid_point ) + $remainder;
[4076] Fix | Delete
[4077] Fix | Delete
for ( $above_midpoint_count = 0; $above_midpoint_count < $steps_above; $above_midpoint_count++ ) {
[4078] Fix | Delete
$current_step = '+' === $spacing_scale['operator']
[4079] Fix | Delete
? $current_step + $spacing_scale['increment']
[4080] Fix | Delete
: ( $spacing_scale['increment'] >= 1 ? $current_step * $spacing_scale['increment'] : $current_step / $spacing_scale['increment'] );
[4081] Fix | Delete
[4082] Fix | Delete
$above_sizes[] = array(
[4083] Fix | Delete
/* translators: %s: Digit to indicate multiple of sizing, eg. 2X-Large. */
[4084] Fix | Delete
'name' => 0 === $above_midpoint_count ? __( 'Large' ) : sprintf( __( '%sX-Large' ), (string) $x_large_count ),
[4085] Fix | Delete
'slug' => (string) $slug,
[4086] Fix | Delete
'size' => round( $current_step, 2 ) . $unit,
[4087] Fix | Delete
);
[4088] Fix | Delete
[4089] Fix | Delete
if ( 1 === $above_midpoint_count ) {
[4090] Fix | Delete
$x_large_count = 2;
[4091] Fix | Delete
}
[4092] Fix | Delete
[4093] Fix | Delete
if ( $above_midpoint_count > 1 ) {
[4094] Fix | Delete
++$x_large_count;
[4095] Fix | Delete
}
[4096] Fix | Delete
[4097] Fix | Delete
$slug += 10;
[4098] Fix | Delete
}
[4099] Fix | Delete
[4100] Fix | Delete
$spacing_sizes = $below_sizes;
[4101] Fix | Delete
foreach ( $above_sizes as $above_sizes_item ) {
[4102] Fix | Delete
$spacing_sizes[] = $above_sizes_item;
[4103] Fix | Delete
}
[4104] Fix | Delete
[4105] Fix | Delete
return $spacing_sizes;
[4106] Fix | Delete
}
[4107] Fix | Delete
[4108] Fix | Delete
/**
[4109] Fix | Delete
* This is used to convert the internal representation of variables to the CSS representation.
[4110] Fix | Delete
* For example, `var:preset|color|vivid-green-cyan` becomes `var(--wp--preset--color--vivid-green-cyan)`.
[4111] Fix | Delete
*
[4112] Fix | Delete
* @since 6.3.0
[4113] Fix | Delete
* @param string $value The variable such as var:preset|color|vivid-green-cyan to convert.
[4114] Fix | Delete
* @return string The converted variable.
[4115] Fix | Delete
*/
[4116] Fix | Delete
private static function convert_custom_properties( $value ) {
[4117] Fix | Delete
$prefix = 'var:';
[4118] Fix | Delete
$prefix_len = strlen( $prefix );
[4119] Fix | Delete
$token_in = '|';
[4120] Fix | Delete
$token_out = '--';
[4121] Fix | Delete
if ( str_starts_with( $value, $prefix ) ) {
[4122] Fix | Delete
$unwrapped_name = str_replace(
[4123] Fix | Delete
$token_in,
[4124] Fix | Delete
$token_out,
[4125] Fix | Delete
substr( $value, $prefix_len )
[4126] Fix | Delete
);
[4127] Fix | Delete
$value = "var(--wp--$unwrapped_name)";
[4128] Fix | Delete
}
[4129] Fix | Delete
[4130] Fix | Delete
return $value;
[4131] Fix | Delete
}
[4132] Fix | Delete
[4133] Fix | Delete
/**
[4134] Fix | Delete
* Given a tree, converts the internal representation of variables to the CSS representation.
[4135] Fix | Delete
* It is recursive and modifies the input in-place.
[4136] Fix | Delete
*
[4137] Fix | Delete
* @since 6.3.0
[4138] Fix | Delete
* @param array $tree Input to process.
[4139] Fix | Delete
* @return array The modified $tree.
[4140] Fix | Delete
*/
[4141] Fix | Delete
private static function resolve_custom_css_format( $tree ) {
[4142] Fix | Delete
$prefix = 'var:';
[4143] Fix | Delete
[4144] Fix | Delete
foreach ( $tree as $key => $data ) {
[4145] Fix | Delete
if ( is_string( $data ) && str_starts_with( $data, $prefix ) ) {
[4146] Fix | Delete
$tree[ $key ] = self::convert_custom_properties( $data );
[4147] Fix | Delete
} elseif ( is_array( $data ) ) {
[4148] Fix | Delete
$tree[ $key ] = self::resolve_custom_css_format( $data );
[4149] Fix | Delete
}
[4150] Fix | Delete
}
[4151] Fix | Delete
[4152] Fix | Delete
return $tree;
[4153] Fix | Delete
}
[4154] Fix | Delete
[4155] Fix | Delete
/**
[4156] Fix | Delete
* Returns the selectors metadata for a block.
[4157] Fix | Delete
*
[4158] Fix | Delete
* @since 6.3.0
[4159] Fix | Delete
*
[4160] Fix | Delete
* @param object $block_type The block type.
[4161] Fix | Delete
* @param string $root_selector The block's root selector.
[4162] Fix | Delete
*
[4163] Fix | Delete
* @return array The custom selectors set by the block.
[4164] Fix | Delete
*/
[4165] Fix | Delete
protected static function get_block_selectors( $block_type, $root_selector ) {
[4166] Fix | Delete
if ( ! empty( $block_type->selectors ) ) {
[4167] Fix | Delete
return $block_type->selectors;
[4168] Fix | Delete
}
[4169] Fix | Delete
[4170] Fix | Delete
$selectors = array( 'root' => $root_selector );
[4171] Fix | Delete
foreach ( static::BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS as $key => $feature ) {
[4172] Fix | Delete
$feature_selector = wp_get_block_css_selector( $block_type, $key );
[4173] Fix | Delete
if ( null !== $feature_selector ) {
[4174] Fix | Delete
$selectors[ $feature ] = array( 'root' => $feature_selector );
[4175] Fix | Delete
}
[4176] Fix | Delete
}
[4177] Fix | Delete
[4178] Fix | Delete
return $selectors;
[4179] Fix | Delete
}
[4180] Fix | Delete
[4181] Fix | Delete
/**
[4182] Fix | Delete
* Generates all the element selectors for a block.
[4183] Fix | Delete
*
[4184] Fix | Delete
* @since 6.3.0
[4185] Fix | Delete
*
[4186] Fix | Delete
* @param string $root_selector The block's root CSS selector.
[4187] Fix | Delete
* @return array The block's element selectors.
[4188] Fix | Delete
*/
[4189] Fix | Delete
protected static function get_block_element_selectors( $root_selector ) {
[4190] Fix | Delete
/*
[4191] Fix | Delete
* Assign defaults, then override those that the block sets by itself.
[4192] Fix | Delete
* If the block selector is compounded, will append the element to each
[4193] Fix | Delete
* individual block selector.
[4194] Fix | Delete
*/
[4195] Fix | Delete
$block_selectors = explode( ',', $root_selector );
[4196] Fix | Delete
$element_selectors = array();
[4197] Fix | Delete
foreach ( static::ELEMENTS as $el_name => $el_selector ) {
[4198] Fix | Delete
$element_selector = array();
[4199] Fix | Delete
foreach ( $block_selectors as $selector ) {
[4200] Fix | Delete
if ( $selector === $el_selector ) {
[4201] Fix | Delete
$element_selector = array( $el_selector );
[4202] Fix | Delete
break;
[4203] Fix | Delete
}
[4204] Fix | Delete
$element_selector[] = static::prepend_to_selector( $el_selector, $selector . ' ' );
[4205] Fix | Delete
}
[4206] Fix | Delete
$element_selectors[ $el_name ] = implode( ',', $element_selector );
[4207] Fix | Delete
}
[4208] Fix | Delete
[4209] Fix | Delete
return $element_selectors;
[4210] Fix | Delete
}
[4211] Fix | Delete
[4212] Fix | Delete
/**
[4213] Fix | Delete
* Generates style declarations for a node's features e.g., color, border,
[4214] Fix | Delete
* typography etc. that have custom selectors in their related block's
[4215] Fix | Delete
* metadata.
[4216] Fix | Delete
*
[4217] Fix | Delete
* @since 6.3.0
[4218] Fix | Delete
*
[4219] Fix | Delete
* @param object $metadata The related block metadata containing selectors.
[4220] Fix | Delete
* @param object $node A merged theme.json node for block or variation.
[4221] Fix | Delete
*
[4222] Fix | Delete
* @return array The style declarations for the node's features with custom
[4223] Fix | Delete
* selectors.
[4224] Fix | Delete
*/
[4225] Fix | Delete
protected function get_feature_declarations_for_node( $metadata, &$node ) {
[4226] Fix | Delete
$declarations = array();
[4227] Fix | Delete
[4228] Fix | Delete
if ( ! isset( $metadata['selectors'] ) ) {
[4229] Fix | Delete
return $declarations;
[4230] Fix | Delete
}
[4231] Fix | Delete
[4232] Fix | Delete
$settings = isset( $this->theme_json['settings'] )
[4233] Fix | Delete
? $this->theme_json['settings']
[4234] Fix | Delete
: array();
[4235] Fix | Delete
[4236] Fix | Delete
foreach ( $metadata['selectors'] as $feature => $feature_selectors ) {
[4237] Fix | Delete
/*
[4238] Fix | Delete
* Skip if this is the block's root selector or the block doesn't
[4239] Fix | Delete
* have any styles for the feature.
[4240] Fix | Delete
*/
[4241] Fix | Delete
if ( 'root' === $feature || empty( $node[ $feature ] ) ) {
[4242] Fix | Delete
continue;
[4243] Fix | Delete
}
[4244] Fix | Delete
[4245] Fix | Delete
if ( is_array( $feature_selectors ) ) {
[4246] Fix | Delete
foreach ( $feature_selectors as $subfeature => $subfeature_selector ) {
[4247] Fix | Delete
if ( 'root' === $subfeature || empty( $node[ $feature ][ $subfeature ] ) ) {
[4248] Fix | Delete
continue;
[4249] Fix | Delete
}
[4250] Fix | Delete
[4251] Fix | Delete
/*
[4252] Fix | Delete
* Create temporary node containing only the subfeature data
[4253] Fix | Delete
* to leverage existing `compute_style_properties` function.
[4254] Fix | Delete
*/
[4255] Fix | Delete
$subfeature_node = array(
[4256] Fix | Delete
$feature => array(
[4257] Fix | Delete
$subfeature => $node[ $feature ][ $subfeature ],
[4258] Fix | Delete
),
[4259] Fix | Delete
);
[4260] Fix | Delete
[4261] Fix | Delete
// Generate style declarations.
[4262] Fix | Delete
$new_declarations = static::compute_style_properties( $subfeature_node, $settings, null, $this->theme_json );
[4263] Fix | Delete
[4264] Fix | Delete
// Merge subfeature declarations into feature declarations.
[4265] Fix | Delete
if ( isset( $declarations[ $subfeature_selector ] ) ) {
[4266] Fix | Delete
foreach ( $new_declarations as $new_declaration ) {
[4267] Fix | Delete
$declarations[ $subfeature_selector ][] = $new_declaration;
[4268] Fix | Delete
}
[4269] Fix | Delete
} else {
[4270] Fix | Delete
$declarations[ $subfeature_selector ] = $new_declarations;
[4271] Fix | Delete
}
[4272] Fix | Delete
[4273] Fix | Delete
/*
[4274] Fix | Delete
* Remove the subfeature from the block's node now its
[4275] Fix | Delete
* styles will be included under its own selector not the
[4276] Fix | Delete
* block's.
[4277] Fix | Delete
*/
[4278] Fix | Delete
unset( $node[ $feature ][ $subfeature ] );
[4279] Fix | Delete
}
[4280] Fix | Delete
}
[4281] Fix | Delete
[4282] Fix | Delete
/*
[4283] Fix | Delete
* Now subfeatures have been processed and removed we can process
[4284] Fix | Delete
* feature root selector or simple string selector.
[4285] Fix | Delete
*/
[4286] Fix | Delete
if (
[4287] Fix | Delete
is_string( $feature_selectors ) ||
[4288] Fix | Delete
( isset( $feature_selectors['root'] ) && $feature_selectors['root'] )
[4289] Fix | Delete
) {
[4290] Fix | Delete
$feature_selector = is_string( $feature_selectors ) ? $feature_selectors : $feature_selectors['root'];
[4291] Fix | Delete
[4292] Fix | Delete
/*
[4293] Fix | Delete
* Create temporary node containing only the feature data
[4294] Fix | Delete
* to leverage existing `compute_style_properties` function.
[4295] Fix | Delete
*/
[4296] Fix | Delete
$feature_node = array( $feature => $node[ $feature ] );
[4297] Fix | Delete
[4298] Fix | Delete
// Generate the style declarations.
[4299] Fix | Delete
$new_declarations = static::compute_style_properties( $feature_node, $settings, null, $this->theme_json );
[4300] Fix | Delete
[4301] Fix | Delete
/*
[4302] Fix | Delete
* Merge new declarations with any that already exist for
[4303] Fix | Delete
* the feature selector. This may occur when multiple block
[4304] Fix | Delete
* support features use the same custom selector.
[4305] Fix | Delete
*/
[4306] Fix | Delete
if ( isset( $declarations[ $feature_selector ] ) ) {
[4307] Fix | Delete
foreach ( $new_declarations as $new_declaration ) {
[4308] Fix | Delete
$declarations[ $feature_selector ][] = $new_declaration;
[4309] Fix | Delete
}
[4310] Fix | Delete
} else {
[4311] Fix | Delete
$declarations[ $feature_selector ] = $new_declarations;
[4312] Fix | Delete
}
[4313] Fix | Delete
[4314] Fix | Delete
/*
[4315] Fix | Delete
* Remove the feature from the block's node now its styles
[4316] Fix | Delete
* will be included under its own selector not the block's.
[4317] Fix | Delete
*/
[4318] Fix | Delete
unset( $node[ $feature ] );
[4319] Fix | Delete
}
[4320] Fix | Delete
}
[4321] Fix | Delete
[4322] Fix | Delete
return $declarations;
[4323] Fix | Delete
}
[4324] Fix | Delete
[4325] Fix | Delete
/**
[4326] Fix | Delete
* Replaces CSS variables with their values in place.
[4327] Fix | Delete
*
[4328] Fix | Delete
* @since 6.3.0
[4329] Fix | Delete
* @since 6.5.0 Check for empty style before processing its value.
[4330] Fix | Delete
*
[4331] Fix | Delete
* @param array $styles CSS declarations to convert.
[4332] Fix | Delete
* @param array $values key => value pairs to use for replacement.
[4333] Fix | Delete
* @return array
[4334] Fix | Delete
*/
[4335] Fix | Delete
private static function convert_variables_to_value( $styles, $values ) {
[4336] Fix | Delete
foreach ( $styles as $key => $style ) {
[4337] Fix | Delete
if ( empty( $style ) ) {
[4338] Fix | Delete
continue;
[4339] Fix | Delete
}
[4340] Fix | Delete
[4341] Fix | Delete
if ( is_array( $style ) ) {
[4342] Fix | Delete
$styles[ $key ] = self::convert_variables_to_value( $style, $values );
[4343] Fix | Delete
continue;
[4344] Fix | Delete
}
[4345] Fix | Delete
[4346] Fix | Delete
if ( 0 <= strpos( $style, 'var(' ) ) {
[4347] Fix | Delete
// find all the variables in the string in the form of var(--variable-name, fallback), with fallback in the second capture group.
[4348] Fix | Delete
[4349] Fix | Delete
$has_matches = preg_match_all( '/var\(([^),]+)?,?\s?(\S+)?\)/', $style, $var_parts );
[4350] Fix | Delete
[4351] Fix | Delete
if ( $has_matches ) {
[4352] Fix | Delete
$resolved_style = $styles[ $key ];
[4353] Fix | Delete
foreach ( $var_parts[1] as $index => $var_part ) {
[4354] Fix | Delete
$key_in_values = 'var(' . $var_part . ')';
[4355] Fix | Delete
$rule_to_replace = $var_parts[0][ $index ]; // the css rule to replace e.g. var(--wp--preset--color--vivid-green-cyan).
[4356] Fix | Delete
$fallback = $var_parts[2][ $index ]; // the fallback value.
[4357] Fix | Delete
$resolved_style = str_replace(
[4358] Fix | Delete
array(
[4359] Fix | Delete
$rule_to_replace,
[4360] Fix | Delete
$fallback,
[4361] Fix | Delete
),
[4362] Fix | Delete
array(
[4363] Fix | Delete
isset( $values[ $key_in_values ] ) ? $values[ $key_in_values ] : $rule_to_replace,
[4364] Fix | Delete
isset( $values[ $fallback ] ) ? $values[ $fallback ] : $fallback,
[4365] Fix | Delete
),
[4366] Fix | Delete
$resolved_style
[4367] Fix | Delete
);
[4368] Fix | Delete
}
[4369] Fix | Delete
$styles[ $key ] = $resolved_style;
[4370] Fix | Delete
}
[4371] Fix | Delete
}
[4372] Fix | Delete
}
[4373] Fix | Delete
[4374] Fix | Delete
return $styles;
[4375] Fix | Delete
}
[4376] Fix | Delete
[4377] Fix | Delete
/**
[4378] Fix | Delete
* Resolves the values of CSS variables in the given styles.
[4379] Fix | Delete
*
[4380] Fix | Delete
* @since 6.3.0
[4381] Fix | Delete
* @param WP_Theme_JSON $theme_json The theme json resolver.
[4382] Fix | Delete
*
[4383] Fix | Delete
* @return WP_Theme_JSON The $theme_json with resolved variables.
[4384] Fix | Delete
*/
[4385] Fix | Delete
public static function resolve_variables( $theme_json ) {
[4386] Fix | Delete
$settings = $theme_json->get_settings();
[4387] Fix | Delete
$styles = $theme_json->get_raw_data()['styles'];
[4388] Fix | Delete
$preset_vars = static::compute_preset_vars( $settings, static::VALID_ORIGINS );
[4389] Fix | Delete
$theme_vars = static::compute_theme_vars( $settings );
[4390] Fix | Delete
$vars = array_reduce(
[4391] Fix | Delete
array_merge( $preset_vars, $theme_vars ),
[4392] Fix | Delete
function ( $carry, $item ) {
[4393] Fix | Delete
$name = $item['name'];
[4394] Fix | Delete
$carry[ "var({$name})" ] = $item['value'];
[4395] Fix | Delete
return $carry;
[4396] Fix | Delete
},
[4397] Fix | Delete
array()
[4398] Fix | Delete
);
[4399] Fix | Delete
[4400] Fix | Delete
$theme_json->theme_json['styles'] = self::convert_variables_to_value( $styles, $vars );
[4401] Fix | Delete
return $theme_json;
[4402] Fix | Delete
}
[4403] Fix | Delete
[4404] Fix | Delete
/**
[4405] Fix | Delete
* Generates a selector for a block style variation.
[4406] Fix | Delete
*
[4407] Fix | Delete
* @since 6.5.0
[4408] Fix | Delete
*
[4409] Fix | Delete
* @param string $variation_name Name of the block style variation.
[4410] Fix | Delete
* @param string $block_selector CSS selector for the block.
[4411] Fix | Delete
* @return string Block selector with block style variation selector added to it.
[4412] Fix | Delete
*/
[4413] Fix | Delete
protected static function get_block_style_variation_selector( $variation_name, $block_selector ) {
[4414] Fix | Delete
$variation_class = ".is-style-$variation_name";
[4415] Fix | Delete
[4416] Fix | Delete
if ( ! $block_selector ) {
[4417] Fix | Delete
return $variation_class;
[4418] Fix | Delete
}
[4419] Fix | Delete
[4420] Fix | Delete
$limit = 1;
[4421] Fix | Delete
$selector_parts = explode( ',', $block_selector );
[4422] Fix | Delete
$result = array();
[4423] Fix | Delete
[4424] Fix | Delete
foreach ( $selector_parts as $part ) {
[4425] Fix | Delete
$result[] = preg_replace_callback(
[4426] Fix | Delete
'/((?::\([^)]+\))?\s*)([^\s:]+)/',
[4427] Fix | Delete
function ( $matches ) use ( $variation_class ) {
[4428] Fix | Delete
return $matches[1] . $matches[2] . $variation_class;
[4429] Fix | Delete
},
[4430] Fix | Delete
$part,
[4431] Fix | Delete
$limit
[4432] Fix | Delete
);
[4433] Fix | Delete
}
[4434] Fix | Delete
[4435] Fix | Delete
return implode( ',', $result );
[4436] Fix | Delete
}
[4437] Fix | Delete
[4438] Fix | Delete
/**
[4439] Fix | Delete
* Collects valid block style variations keyed by block type.
[4440] Fix | Delete
*
[4441] Fix | Delete
* @since 6.6.0
[4442] Fix | Delete
*
[4443] Fix | Delete
* @return array Valid block style variations by block type.
[4444] Fix | Delete
*/
[4445] Fix | Delete
protected static function get_valid_block_style_variations() {
[4446] Fix | Delete
$valid_variations = array();
[4447] Fix | Delete
foreach ( self::get_blocks_metadata() as $block_name => $block_meta ) {
[4448] Fix | Delete
if ( ! isset( $block_meta['styleVariations'] ) ) {
[4449] Fix | Delete
continue;
[4450] Fix | Delete
}
[4451] Fix | Delete
$valid_variations[ $block_name ] = array_keys( $block_meta['styleVariations'] );
[4452] Fix | Delete
}
[4453] Fix | Delete
[4454] Fix | Delete
return $valid_variations;
[4455] Fix | Delete
}
[4456] Fix | Delete
}
[4457] Fix | Delete
[4458] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function