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
}
[3500] Fix | Delete
[3501] Fix | Delete
return $theme_json;
[3502] Fix | Delete
}
[3503] Fix | Delete
[3504] Fix | Delete
/**
[3505] Fix | Delete
* Processes a setting node and returns the same node
[3506] Fix | Delete
* without the insecure settings.
[3507] Fix | Delete
*
[3508] Fix | Delete
* @since 5.9.0
[3509] Fix | Delete
*
[3510] Fix | Delete
* @param array $input Node to process.
[3511] Fix | Delete
* @return array
[3512] Fix | Delete
*/
[3513] Fix | Delete
protected static function remove_insecure_settings( $input ) {
[3514] Fix | Delete
$output = array();
[3515] Fix | Delete
foreach ( static::PRESETS_METADATA as $preset_metadata ) {
[3516] Fix | Delete
foreach ( static::VALID_ORIGINS as $origin ) {
[3517] Fix | Delete
$path_with_origin = $preset_metadata['path'];
[3518] Fix | Delete
$path_with_origin[] = $origin;
[3519] Fix | Delete
$presets = _wp_array_get( $input, $path_with_origin, null );
[3520] Fix | Delete
if ( null === $presets ) {
[3521] Fix | Delete
continue;
[3522] Fix | Delete
}
[3523] Fix | Delete
[3524] Fix | Delete
$escaped_preset = array();
[3525] Fix | Delete
foreach ( $presets as $preset ) {
[3526] Fix | Delete
if (
[3527] Fix | Delete
esc_attr( esc_html( $preset['name'] ) ) === $preset['name'] &&
[3528] Fix | Delete
sanitize_html_class( $preset['slug'] ) === $preset['slug']
[3529] Fix | Delete
) {
[3530] Fix | Delete
$value = null;
[3531] Fix | Delete
if ( isset( $preset_metadata['value_key'], $preset[ $preset_metadata['value_key'] ] ) ) {
[3532] Fix | Delete
$value = $preset[ $preset_metadata['value_key'] ];
[3533] Fix | Delete
} elseif (
[3534] Fix | Delete
isset( $preset_metadata['value_func'] ) &&
[3535] Fix | Delete
is_callable( $preset_metadata['value_func'] )
[3536] Fix | Delete
) {
[3537] Fix | Delete
$value = call_user_func( $preset_metadata['value_func'], $preset );
[3538] Fix | Delete
}
[3539] Fix | Delete
[3540] Fix | Delete
$preset_is_valid = true;
[3541] Fix | Delete
foreach ( $preset_metadata['properties'] as $property ) {
[3542] Fix | Delete
if ( ! static::is_safe_css_declaration( $property, $value ) ) {
[3543] Fix | Delete
$preset_is_valid = false;
[3544] Fix | Delete
break;
[3545] Fix | Delete
}
[3546] Fix | Delete
}
[3547] Fix | Delete
[3548] Fix | Delete
if ( $preset_is_valid ) {
[3549] Fix | Delete
$escaped_preset[] = $preset;
[3550] Fix | Delete
}
[3551] Fix | Delete
}
[3552] Fix | Delete
}
[3553] Fix | Delete
[3554] Fix | Delete
if ( ! empty( $escaped_preset ) ) {
[3555] Fix | Delete
_wp_array_set( $output, $path_with_origin, $escaped_preset );
[3556] Fix | Delete
}
[3557] Fix | Delete
}
[3558] Fix | Delete
}
[3559] Fix | Delete
[3560] Fix | Delete
// Ensure indirect properties not included in any `PRESETS_METADATA` value are allowed.
[3561] Fix | Delete
static::remove_indirect_properties( $input, $output );
[3562] Fix | Delete
[3563] Fix | Delete
return $output;
[3564] Fix | Delete
}
[3565] Fix | Delete
[3566] Fix | Delete
/**
[3567] Fix | Delete
* Processes a style node and returns the same node
[3568] Fix | Delete
* without the insecure styles.
[3569] Fix | Delete
*
[3570] Fix | Delete
* @since 5.9.0
[3571] Fix | Delete
*
[3572] Fix | Delete
* @param array $input Node to process.
[3573] Fix | Delete
* @return array
[3574] Fix | Delete
*/
[3575] Fix | Delete
protected static function remove_insecure_styles( $input ) {
[3576] Fix | Delete
$output = array();
[3577] Fix | Delete
$declarations = static::compute_style_properties( $input );
[3578] Fix | Delete
[3579] Fix | Delete
foreach ( $declarations as $declaration ) {
[3580] Fix | Delete
if ( static::is_safe_css_declaration( $declaration['name'], $declaration['value'] ) ) {
[3581] Fix | Delete
$path = static::PROPERTIES_METADATA[ $declaration['name'] ];
[3582] Fix | Delete
[3583] Fix | Delete
/*
[3584] Fix | Delete
* Check the value isn't an array before adding so as to not
[3585] Fix | Delete
* double up shorthand and longhand styles.
[3586] Fix | Delete
*/
[3587] Fix | Delete
$value = _wp_array_get( $input, $path, array() );
[3588] Fix | Delete
if ( ! is_array( $value ) ) {
[3589] Fix | Delete
_wp_array_set( $output, $path, $value );
[3590] Fix | Delete
}
[3591] Fix | Delete
}
[3592] Fix | Delete
}
[3593] Fix | Delete
[3594] Fix | Delete
// Ensure indirect properties not handled by `compute_style_properties` are allowed.
[3595] Fix | Delete
static::remove_indirect_properties( $input, $output );
[3596] Fix | Delete
[3597] Fix | Delete
return $output;
[3598] Fix | Delete
}
[3599] Fix | Delete
[3600] Fix | Delete
/**
[3601] Fix | Delete
* Checks that a declaration provided by the user is safe.
[3602] Fix | Delete
*
[3603] Fix | Delete
* @since 5.9.0
[3604] Fix | Delete
*
[3605] Fix | Delete
* @param string $property_name Property name in a CSS declaration, i.e. the `color` in `color: red`.
[3606] Fix | Delete
* @param string $property_value Value in a CSS declaration, i.e. the `red` in `color: red`.
[3607] Fix | Delete
* @return bool
[3608] Fix | Delete
*/
[3609] Fix | Delete
protected static function is_safe_css_declaration( $property_name, $property_value ) {
[3610] Fix | Delete
$style_to_validate = $property_name . ': ' . $property_value;
[3611] Fix | Delete
$filtered = esc_html( safecss_filter_attr( $style_to_validate ) );
[3612] Fix | Delete
return ! empty( trim( $filtered ) );
[3613] Fix | Delete
}
[3614] Fix | Delete
[3615] Fix | Delete
/**
[3616] Fix | Delete
* Removes indirect properties from the given input node and
[3617] Fix | Delete
* sets in the given output node.
[3618] Fix | Delete
*
[3619] Fix | Delete
* @since 6.2.0
[3620] Fix | Delete
*
[3621] Fix | Delete
* @param array $input Node to process.
[3622] Fix | Delete
* @param array $output The processed node. Passed by reference.
[3623] Fix | Delete
*/
[3624] Fix | Delete
private static function remove_indirect_properties( $input, &$output ) {
[3625] Fix | Delete
foreach ( static::INDIRECT_PROPERTIES_METADATA as $property => $paths ) {
[3626] Fix | Delete
foreach ( $paths as $path ) {
[3627] Fix | Delete
$value = _wp_array_get( $input, $path );
[3628] Fix | Delete
if (
[3629] Fix | Delete
is_string( $value ) &&
[3630] Fix | Delete
static::is_safe_css_declaration( $property, $value )
[3631] Fix | Delete
) {
[3632] Fix | Delete
_wp_array_set( $output, $path, $value );
[3633] Fix | Delete
}
[3634] Fix | Delete
}
[3635] Fix | Delete
}
[3636] Fix | Delete
}
[3637] Fix | Delete
[3638] Fix | Delete
/**
[3639] Fix | Delete
* Returns the raw data.
[3640] Fix | Delete
*
[3641] Fix | Delete
* @since 5.8.0
[3642] Fix | Delete
*
[3643] Fix | Delete
* @return array Raw data.
[3644] Fix | Delete
*/
[3645] Fix | Delete
public function get_raw_data() {
[3646] Fix | Delete
return $this->theme_json;
[3647] Fix | Delete
}
[3648] Fix | Delete
[3649] Fix | Delete
/**
[3650] Fix | Delete
* Transforms the given editor settings according the
[3651] Fix | Delete
* add_theme_support format to the theme.json format.
[3652] Fix | Delete
*
[3653] Fix | Delete
* @since 5.8.0
[3654] Fix | Delete
*
[3655] Fix | Delete
* @param array $settings Existing editor settings.
[3656] Fix | Delete
* @return array Config that adheres to the theme.json schema.
[3657] Fix | Delete
*/
[3658] Fix | Delete
public static function get_from_editor_settings( $settings ) {
[3659] Fix | Delete
$theme_settings = array(
[3660] Fix | Delete
'version' => static::LATEST_SCHEMA,
[3661] Fix | Delete
'settings' => array(),
[3662] Fix | Delete
);
[3663] Fix | Delete
[3664] Fix | Delete
// Deprecated theme supports.
[3665] Fix | Delete
if ( isset( $settings['disableCustomColors'] ) ) {
[3666] Fix | Delete
$theme_settings['settings']['color']['custom'] = ! $settings['disableCustomColors'];
[3667] Fix | Delete
}
[3668] Fix | Delete
[3669] Fix | Delete
if ( isset( $settings['disableCustomGradients'] ) ) {
[3670] Fix | Delete
$theme_settings['settings']['color']['customGradient'] = ! $settings['disableCustomGradients'];
[3671] Fix | Delete
}
[3672] Fix | Delete
[3673] Fix | Delete
if ( isset( $settings['disableCustomFontSizes'] ) ) {
[3674] Fix | Delete
$theme_settings['settings']['typography']['customFontSize'] = ! $settings['disableCustomFontSizes'];
[3675] Fix | Delete
}
[3676] Fix | Delete
[3677] Fix | Delete
if ( isset( $settings['enableCustomLineHeight'] ) ) {
[3678] Fix | Delete
$theme_settings['settings']['typography']['lineHeight'] = $settings['enableCustomLineHeight'];
[3679] Fix | Delete
}
[3680] Fix | Delete
[3681] Fix | Delete
if ( isset( $settings['enableCustomUnits'] ) ) {
[3682] Fix | Delete
$theme_settings['settings']['spacing']['units'] = ( true === $settings['enableCustomUnits'] ) ?
[3683] Fix | Delete
array( 'px', 'em', 'rem', 'vh', 'vw', '%' ) :
[3684] Fix | Delete
$settings['enableCustomUnits'];
[3685] Fix | Delete
}
[3686] Fix | Delete
[3687] Fix | Delete
if ( isset( $settings['colors'] ) ) {
[3688] Fix | Delete
$theme_settings['settings']['color']['palette'] = $settings['colors'];
[3689] Fix | Delete
}
[3690] Fix | Delete
[3691] Fix | Delete
if ( isset( $settings['gradients'] ) ) {
[3692] Fix | Delete
$theme_settings['settings']['color']['gradients'] = $settings['gradients'];
[3693] Fix | Delete
}
[3694] Fix | Delete
[3695] Fix | Delete
if ( isset( $settings['fontSizes'] ) ) {
[3696] Fix | Delete
$font_sizes = $settings['fontSizes'];
[3697] Fix | Delete
// Back-compatibility for presets without units.
[3698] Fix | Delete
foreach ( $font_sizes as $key => $font_size ) {
[3699] Fix | Delete
if ( is_numeric( $font_size['size'] ) ) {
[3700] Fix | Delete
$font_sizes[ $key ]['size'] = $font_size['size'] . 'px';
[3701] Fix | Delete
}
[3702] Fix | Delete
}
[3703] Fix | Delete
$theme_settings['settings']['typography']['fontSizes'] = $font_sizes;
[3704] Fix | Delete
}
[3705] Fix | Delete
[3706] Fix | Delete
if ( isset( $settings['enableCustomSpacing'] ) ) {
[3707] Fix | Delete
$theme_settings['settings']['spacing']['padding'] = $settings['enableCustomSpacing'];
[3708] Fix | Delete
}
[3709] Fix | Delete
[3710] Fix | Delete
if ( isset( $settings['spacingSizes'] ) ) {
[3711] Fix | Delete
$theme_settings['settings']['spacing']['spacingSizes'] = $settings['spacingSizes'];
[3712] Fix | Delete
}
[3713] Fix | Delete
[3714] Fix | Delete
return $theme_settings;
[3715] Fix | Delete
}
[3716] Fix | Delete
[3717] Fix | Delete
/**
[3718] Fix | Delete
* Returns the current theme's wanted patterns(slugs) to be
[3719] Fix | Delete
* registered from Pattern Directory.
[3720] Fix | Delete
*
[3721] Fix | Delete
* @since 6.0.0
[3722] Fix | Delete
*
[3723] Fix | Delete
* @return string[]
[3724] Fix | Delete
*/
[3725] Fix | Delete
public function get_patterns() {
[3726] Fix | Delete
if ( isset( $this->theme_json['patterns'] ) && is_array( $this->theme_json['patterns'] ) ) {
[3727] Fix | Delete
return $this->theme_json['patterns'];
[3728] Fix | Delete
}
[3729] Fix | Delete
return array();
[3730] Fix | Delete
}
[3731] Fix | Delete
[3732] Fix | Delete
/**
[3733] Fix | Delete
* Returns a valid theme.json as provided by a theme.
[3734] Fix | Delete
*
[3735] Fix | Delete
* Unlike get_raw_data() this returns the presets flattened, as provided by a theme.
[3736] Fix | Delete
* This also uses appearanceTools instead of their opt-ins if all of them are true.
[3737] Fix | Delete
*
[3738] Fix | Delete
* @since 6.0.0
[3739] Fix | Delete
*
[3740] Fix | Delete
* @return array
[3741] Fix | Delete
*/
[3742] Fix | Delete
public function get_data() {
[3743] Fix | Delete
$output = $this->theme_json;
[3744] Fix | Delete
$nodes = static::get_setting_nodes( $output );
[3745] Fix | Delete
[3746] Fix | Delete
/**
[3747] Fix | Delete
* Flatten the theme & custom origins into a single one.
[3748] Fix | Delete
*
[3749] Fix | Delete
* For example, the following:
[3750] Fix | Delete
*
[3751] Fix | Delete
* {
[3752] Fix | Delete
* "settings": {
[3753] Fix | Delete
* "color": {
[3754] Fix | Delete
* "palette": {
[3755] Fix | Delete
* "theme": [ {} ],
[3756] Fix | Delete
* "custom": [ {} ]
[3757] Fix | Delete
* }
[3758] Fix | Delete
* }
[3759] Fix | Delete
* }
[3760] Fix | Delete
* }
[3761] Fix | Delete
*
[3762] Fix | Delete
* will be converted to:
[3763] Fix | Delete
*
[3764] Fix | Delete
* {
[3765] Fix | Delete
* "settings": {
[3766] Fix | Delete
* "color": {
[3767] Fix | Delete
* "palette": [ {} ]
[3768] Fix | Delete
* }
[3769] Fix | Delete
* }
[3770] Fix | Delete
* }
[3771] Fix | Delete
*/
[3772] Fix | Delete
foreach ( $nodes as $node ) {
[3773] Fix | Delete
foreach ( static::PRESETS_METADATA as $preset_metadata ) {
[3774] Fix | Delete
$path = $node['path'];
[3775] Fix | Delete
foreach ( $preset_metadata['path'] as $preset_metadata_path ) {
[3776] Fix | Delete
$path[] = $preset_metadata_path;
[3777] Fix | Delete
}
[3778] Fix | Delete
$preset = _wp_array_get( $output, $path, null );
[3779] Fix | Delete
if ( null === $preset ) {
[3780] Fix | Delete
continue;
[3781] Fix | Delete
}
[3782] Fix | Delete
[3783] Fix | Delete
$items = array();
[3784] Fix | Delete
if ( isset( $preset['theme'] ) ) {
[3785] Fix | Delete
foreach ( $preset['theme'] as $item ) {
[3786] Fix | Delete
$slug = $item['slug'];
[3787] Fix | Delete
unset( $item['slug'] );
[3788] Fix | Delete
$items[ $slug ] = $item;
[3789] Fix | Delete
}
[3790] Fix | Delete
}
[3791] Fix | Delete
if ( isset( $preset['custom'] ) ) {
[3792] Fix | Delete
foreach ( $preset['custom'] as $item ) {
[3793] Fix | Delete
$slug = $item['slug'];
[3794] Fix | Delete
unset( $item['slug'] );
[3795] Fix | Delete
$items[ $slug ] = $item;
[3796] Fix | Delete
}
[3797] Fix | Delete
}
[3798] Fix | Delete
$flattened_preset = array();
[3799] Fix | Delete
foreach ( $items as $slug => $value ) {
[3800] Fix | Delete
$flattened_preset[] = array_merge( array( 'slug' => (string) $slug ), $value );
[3801] Fix | Delete
}
[3802] Fix | Delete
_wp_array_set( $output, $path, $flattened_preset );
[3803] Fix | Delete
}
[3804] Fix | Delete
}
[3805] Fix | Delete
[3806] Fix | Delete
/*
[3807] Fix | Delete
* If all of the static::APPEARANCE_TOOLS_OPT_INS are true,
[3808] Fix | Delete
* this code unsets them and sets 'appearanceTools' instead.
[3809] Fix | Delete
*/
[3810] Fix | Delete
foreach ( $nodes as $node ) {
[3811] Fix | Delete
$all_opt_ins_are_set = true;
[3812] Fix | Delete
foreach ( static::APPEARANCE_TOOLS_OPT_INS as $opt_in_path ) {
[3813] Fix | Delete
$full_path = $node['path'];
[3814] Fix | Delete
foreach ( $opt_in_path as $opt_in_path_item ) {
[3815] Fix | Delete
$full_path[] = $opt_in_path_item;
[3816] Fix | Delete
}
[3817] Fix | Delete
/*
[3818] Fix | Delete
* Use "unset prop" as a marker instead of "null" because
[3819] Fix | Delete
* "null" can be a valid value for some props (e.g. blockGap).
[3820] Fix | Delete
*/
[3821] Fix | Delete
$opt_in_value = _wp_array_get( $output, $full_path, 'unset prop' );
[3822] Fix | Delete
if ( 'unset prop' === $opt_in_value ) {
[3823] Fix | Delete
$all_opt_ins_are_set = false;
[3824] Fix | Delete
break;
[3825] Fix | Delete
}
[3826] Fix | Delete
}
[3827] Fix | Delete
[3828] Fix | Delete
if ( $all_opt_ins_are_set ) {
[3829] Fix | Delete
$node_path_with_appearance_tools = $node['path'];
[3830] Fix | Delete
$node_path_with_appearance_tools[] = 'appearanceTools';
[3831] Fix | Delete
_wp_array_set( $output, $node_path_with_appearance_tools, true );
[3832] Fix | Delete
foreach ( static::APPEARANCE_TOOLS_OPT_INS as $opt_in_path ) {
[3833] Fix | Delete
$full_path = $node['path'];
[3834] Fix | Delete
foreach ( $opt_in_path as $opt_in_path_item ) {
[3835] Fix | Delete
$full_path[] = $opt_in_path_item;
[3836] Fix | Delete
}
[3837] Fix | Delete
/*
[3838] Fix | Delete
* Use "unset prop" as a marker instead of "null" because
[3839] Fix | Delete
* "null" can be a valid value for some props (e.g. blockGap).
[3840] Fix | Delete
*/
[3841] Fix | Delete
$opt_in_value = _wp_array_get( $output, $full_path, 'unset prop' );
[3842] Fix | Delete
if ( true !== $opt_in_value ) {
[3843] Fix | Delete
continue;
[3844] Fix | Delete
}
[3845] Fix | Delete
[3846] Fix | Delete
/*
[3847] Fix | Delete
* The following could be improved to be path independent.
[3848] Fix | Delete
* At the moment it relies on a couple of assumptions:
[3849] Fix | Delete
*
[3850] Fix | Delete
* - all opt-ins having a path of size 2.
[3851] Fix | Delete
* - there's two sources of settings: the top-level and the block-level.
[3852] Fix | Delete
*/
[3853] Fix | Delete
if (
[3854] Fix | Delete
( 1 === count( $node['path'] ) ) &&
[3855] Fix | Delete
( 'settings' === $node['path'][0] )
[3856] Fix | Delete
) {
[3857] Fix | Delete
// Top-level settings.
[3858] Fix | Delete
unset( $output['settings'][ $opt_in_path[0] ][ $opt_in_path[1] ] );
[3859] Fix | Delete
if ( empty( $output['settings'][ $opt_in_path[0] ] ) ) {
[3860] Fix | Delete
unset( $output['settings'][ $opt_in_path[0] ] );
[3861] Fix | Delete
}
[3862] Fix | Delete
} elseif (
[3863] Fix | Delete
( 3 === count( $node['path'] ) ) &&
[3864] Fix | Delete
( 'settings' === $node['path'][0] ) &&
[3865] Fix | Delete
( 'blocks' === $node['path'][1] )
[3866] Fix | Delete
) {
[3867] Fix | Delete
// Block-level settings.
[3868] Fix | Delete
$block_name = $node['path'][2];
[3869] Fix | Delete
unset( $output['settings']['blocks'][ $block_name ][ $opt_in_path[0] ][ $opt_in_path[1] ] );
[3870] Fix | Delete
if ( empty( $output['settings']['blocks'][ $block_name ][ $opt_in_path[0] ] ) ) {
[3871] Fix | Delete
unset( $output['settings']['blocks'][ $block_name ][ $opt_in_path[0] ] );
[3872] Fix | Delete
}
[3873] Fix | Delete
}
[3874] Fix | Delete
}
[3875] Fix | Delete
}
[3876] Fix | Delete
}
[3877] Fix | Delete
[3878] Fix | Delete
wp_recursive_ksort( $output );
[3879] Fix | Delete
[3880] Fix | Delete
return $output;
[3881] Fix | Delete
}
[3882] Fix | Delete
[3883] Fix | Delete
/**
[3884] Fix | Delete
* Sets the spacingSizes array based on the spacingScale values from theme.json.
[3885] Fix | Delete
*
[3886] Fix | Delete
* @since 6.1.0
[3887] Fix | Delete
* @deprecated 6.6.0 No longer used as the spacingSizes are automatically
[3888] Fix | Delete
* generated in the constructor and merge methods instead
[3889] Fix | Delete
* of manually after instantiation.
[3890] Fix | Delete
*
[3891] Fix | Delete
* @return null|void
[3892] Fix | Delete
*/
[3893] Fix | Delete
public function set_spacing_sizes() {
[3894] Fix | Delete
_deprecated_function( __METHOD__, '6.6.0' );
[3895] Fix | Delete
[3896] Fix | Delete
$spacing_scale = isset( $this->theme_json['settings']['spacing']['spacingScale'] )
[3897] Fix | Delete
? $this->theme_json['settings']['spacing']['spacingScale']
[3898] Fix | Delete
: array();
[3899] Fix | Delete
[3900] Fix | Delete
if ( ! isset( $spacing_scale['steps'] )
[3901] Fix | Delete
|| ! is_numeric( $spacing_scale['steps'] )
[3902] Fix | Delete
|| ! isset( $spacing_scale['mediumStep'] )
[3903] Fix | Delete
|| ! isset( $spacing_scale['unit'] )
[3904] Fix | Delete
|| ! isset( $spacing_scale['operator'] )
[3905] Fix | Delete
|| ! isset( $spacing_scale['increment'] )
[3906] Fix | Delete
|| ! isset( $spacing_scale['steps'] )
[3907] Fix | Delete
|| ! is_numeric( $spacing_scale['increment'] )
[3908] Fix | Delete
|| ! is_numeric( $spacing_scale['mediumStep'] )
[3909] Fix | Delete
|| ( '+' !== $spacing_scale['operator'] && '*' !== $spacing_scale['operator'] ) ) {
[3910] Fix | Delete
if ( ! empty( $spacing_scale ) ) {
[3911] Fix | Delete
wp_trigger_error(
[3912] Fix | Delete
__METHOD__,
[3913] Fix | Delete
sprintf(
[3914] Fix | Delete
/* translators: 1: theme.json, 2: settings.spacing.spacingScale */
[3915] Fix | Delete
__( 'Some of the %1$s %2$s values are invalid' ),
[3916] Fix | Delete
'theme.json',
[3917] Fix | Delete
'settings.spacing.spacingScale'
[3918] Fix | Delete
),
[3919] Fix | Delete
E_USER_NOTICE
[3920] Fix | Delete
);
[3921] Fix | Delete
}
[3922] Fix | Delete
return null;
[3923] Fix | Delete
}
[3924] Fix | Delete
[3925] Fix | Delete
// If theme authors want to prevent the generation of the core spacing scale they can set their theme.json spacingScale.steps to 0.
[3926] Fix | Delete
if ( 0 === $spacing_scale['steps'] ) {
[3927] Fix | Delete
return null;
[3928] Fix | Delete
}
[3929] Fix | Delete
[3930] Fix | Delete
$spacing_sizes = static::compute_spacing_sizes( $spacing_scale );
[3931] Fix | Delete
[3932] Fix | Delete
// If there are 7 or fewer steps in the scale revert to numbers for labels instead of t-shirt sizes.
[3933] Fix | Delete
if ( $spacing_scale['steps'] <= 7 ) {
[3934] Fix | Delete
for ( $spacing_sizes_count = 0; $spacing_sizes_count < count( $spacing_sizes ); $spacing_sizes_count++ ) {
[3935] Fix | Delete
$spacing_sizes[ $spacing_sizes_count ]['name'] = (string) ( $spacing_sizes_count + 1 );
[3936] Fix | Delete
}
[3937] Fix | Delete
}
[3938] Fix | Delete
[3939] Fix | Delete
_wp_array_set( $this->theme_json, array( 'settings', 'spacing', 'spacingSizes', 'default' ), $spacing_sizes );
[3940] Fix | Delete
}
[3941] Fix | Delete
[3942] Fix | Delete
/**
[3943] Fix | Delete
* Merges two sets of spacing size presets.
[3944] Fix | Delete
*
[3945] Fix | Delete
* @since 6.6.0
[3946] Fix | Delete
*
[3947] Fix | Delete
* @param array $base The base set of spacing sizes.
[3948] Fix | Delete
* @param array $incoming The set of spacing sizes to merge with the base. Duplicate slugs will override the base values.
[3949] Fix | Delete
* @return array The merged set of spacing sizes.
[3950] Fix | Delete
*/
[3951] Fix | Delete
private static function merge_spacing_sizes( $base, $incoming ) {
[3952] Fix | Delete
// Preserve the order if there are no base (spacingScale) values.
[3953] Fix | Delete
if ( empty( $base ) ) {
[3954] Fix | Delete
return $incoming;
[3955] Fix | Delete
}
[3956] Fix | Delete
$merged = array();
[3957] Fix | Delete
foreach ( $base as $item ) {
[3958] Fix | Delete
$merged[ $item['slug'] ] = $item;
[3959] Fix | Delete
}
[3960] Fix | Delete
foreach ( $incoming as $item ) {
[3961] Fix | Delete
$merged[ $item['slug'] ] = $item;
[3962] Fix | Delete
}
[3963] Fix | Delete
ksort( $merged, SORT_NUMERIC );
[3964] Fix | Delete
return array_values( $merged );
[3965] Fix | Delete
}
[3966] Fix | Delete
[3967] Fix | Delete
/**
[3968] Fix | Delete
* Generates a set of spacing sizes by starting with a medium size and
[3969] Fix | Delete
* applying an operator with an increment value to generate the rest of the
[3970] Fix | Delete
* sizes outward from the medium size. The medium slug is '50' with the rest
[3971] Fix | Delete
* of the slugs being 10 apart. The generated names use t-shirt sizing.
[3972] Fix | Delete
*
[3973] Fix | Delete
* Example:
[3974] Fix | Delete
*
[3975] Fix | Delete
* $spacing_scale = array(
[3976] Fix | Delete
* 'steps' => 4,
[3977] Fix | Delete
* 'mediumStep' => 16,
[3978] Fix | Delete
* 'unit' => 'px',
[3979] Fix | Delete
* 'operator' => '+',
[3980] Fix | Delete
* 'increment' => 2,
[3981] Fix | Delete
* );
[3982] Fix | Delete
* $spacing_sizes = static::compute_spacing_sizes( $spacing_scale );
[3983] Fix | Delete
* // -> array(
[3984] Fix | Delete
* // array( 'name' => 'Small', 'slug' => '40', 'size' => '14px' ),
[3985] Fix | Delete
* // array( 'name' => 'Medium', 'slug' => '50', 'size' => '16px' ),
[3986] Fix | Delete
* // array( 'name' => 'Large', 'slug' => '60', 'size' => '18px' ),
[3987] Fix | Delete
* // array( 'name' => 'X-Large', 'slug' => '70', 'size' => '20px' ),
[3988] Fix | Delete
* // )
[3989] Fix | Delete
*
[3990] Fix | Delete
* @since 6.6.0
[3991] Fix | Delete
*
[3992] Fix | Delete
* @param array $spacing_scale {
[3993] Fix | Delete
* The spacing scale values. All are required.
[3994] Fix | Delete
*
[3995] Fix | Delete
* @type int $steps The number of steps in the scale. (up to 10 steps are supported.)
[3996] Fix | Delete
* @type float $mediumStep The middle value that gets the slug '50'. (For even number of steps, this becomes the first middle value.)
[3997] Fix | Delete
* @type string $unit The CSS unit to use for the sizes.
[3998] Fix | Delete
* @type string $operator The mathematical operator to apply to generate the other sizes. Either '+' or '*'.
[3999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function