diff --git a/wp-includes/block-supports/border.php b/wp-includes/block-supports/border.php index 15fd36bbdc..9c466c009d 100644 --- a/wp-includes/block-supports/border.php +++ b/wp-includes/block-supports/border.php @@ -50,7 +50,7 @@ function wp_register_border_support( $block_type ) { * @return array Border CSS classes and inline styles. */ function wp_apply_border_support( $block_type, $block_attributes ) { - if ( wp_skip_border_serialization( $block_type ) ) { + if ( wp_should_skip_block_supports_serialization( $block_type, 'border' ) ) { return array(); } @@ -60,7 +60,8 @@ function wp_apply_border_support( $block_type, $block_attributes ) { // Border radius. if ( wp_has_border_feature_support( $block_type, 'radius' ) && - isset( $block_attributes['style']['border']['radius'] ) + isset( $block_attributes['style']['border']['radius'] ) && + ! wp_should_skip_block_supports_serialization( $block_type, '__experimentalBorder', 'radius' ) ) { $border_radius = $block_attributes['style']['border']['radius']; @@ -84,7 +85,8 @@ function wp_apply_border_support( $block_type, $block_attributes ) { // Border style. if ( wp_has_border_feature_support( $block_type, 'style' ) && - isset( $block_attributes['style']['border']['style'] ) + isset( $block_attributes['style']['border']['style'] ) && + ! wp_should_skip_block_supports_serialization( $block_type, '__experimentalBorder', 'style' ) ) { $border_style = $block_attributes['style']['border']['style']; $styles[] = sprintf( 'border-style: %s;', $border_style ); @@ -93,7 +95,8 @@ function wp_apply_border_support( $block_type, $block_attributes ) { // Border width. if ( wp_has_border_feature_support( $block_type, 'width' ) && - isset( $block_attributes['style']['border']['width'] ) + isset( $block_attributes['style']['border']['width'] ) && + ! wp_should_skip_block_supports_serialization( $block_type, '__experimentalBorder', 'width' ) ) { $border_width = $block_attributes['style']['border']['width']; @@ -106,7 +109,10 @@ function wp_apply_border_support( $block_type, $block_attributes ) { } // Border color. - if ( wp_has_border_feature_support( $block_type, 'color' ) ) { + if ( + wp_has_border_feature_support( $block_type, 'color' ) && + ! wp_should_skip_block_supports_serialization( $block_type, '__experimentalBorder', 'color' ) + ) { $has_named_border_color = array_key_exists( 'borderColor', $block_attributes ); $has_custom_border_color = isset( $block_attributes['style']['border']['color'] ); @@ -136,25 +142,6 @@ function wp_apply_border_support( $block_type, $block_attributes ) { return $attributes; } -/** - * Checks whether serialization of the current block's border properties should - * occur. - * - * @since 5.8.0 - * @access private - * - * @param WP_Block_Type $block_type Block type. - * @return bool Whether serialization of the current block's border properties - * should occur. - */ -function wp_skip_border_serialization( $block_type ) { - $border_support = _wp_array_get( $block_type->supports, array( '__experimentalBorder' ), false ); - - return is_array( $border_support ) && - array_key_exists( '__experimentalSkipSerialization', $border_support ) && - $border_support['__experimentalSkipSerialization']; -} - /** * Checks whether the current block type supports the border feature requested. * diff --git a/wp-includes/block-supports/colors.php b/wp-includes/block-supports/colors.php index 7db9a4ad7a..13ad5d0d99 100644 --- a/wp-includes/block-supports/colors.php +++ b/wp-includes/block-supports/colors.php @@ -75,8 +75,7 @@ function wp_apply_colors_support( $block_type, $block_attributes ) { if ( is_array( $color_support ) && - array_key_exists( '__experimentalSkipSerialization', $color_support ) && - $color_support['__experimentalSkipSerialization'] + wp_should_skip_block_supports_serialization( $block_type, 'color' ) ) { return array(); } @@ -89,7 +88,7 @@ function wp_apply_colors_support( $block_type, $block_attributes ) { // Text colors. // Check support for text colors. - if ( $has_text_colors_support ) { + if ( $has_text_colors_support && ! wp_should_skip_block_supports_serialization( $block_type, 'color', 'text' ) ) { $has_named_text_color = array_key_exists( 'textColor', $block_attributes ); $has_custom_text_color = isset( $block_attributes['style']['color']['text'] ); @@ -106,7 +105,7 @@ function wp_apply_colors_support( $block_type, $block_attributes ) { } // Background colors. - if ( $has_background_colors_support ) { + if ( $has_background_colors_support && ! wp_should_skip_block_supports_serialization( $block_type, 'color', 'background' ) ) { $has_named_background_color = array_key_exists( 'backgroundColor', $block_attributes ); $has_custom_background_color = isset( $block_attributes['style']['color']['background'] ); @@ -123,7 +122,7 @@ function wp_apply_colors_support( $block_type, $block_attributes ) { } // Gradients. - if ( $has_gradients_support ) { + if ( $has_gradients_support && ! wp_should_skip_block_supports_serialization( $block_type, 'color', 'gradients' ) ) { $has_named_gradient = array_key_exists( 'gradient', $block_attributes ); $has_custom_gradient = isset( $block_attributes['style']['color']['gradient'] ); diff --git a/wp-includes/block-supports/dimensions.php b/wp-includes/block-supports/dimensions.php index 7e56c011e7..3223dbe0af 100644 --- a/wp-includes/block-supports/dimensions.php +++ b/wp-includes/block-supports/dimensions.php @@ -4,7 +4,7 @@ * * This does not include the `spacing` block support even though that visually * appears under the "Dimensions" panel in the editor. It remains in its - * original `spacing.php` file for backwards compatibility. + * original `spacing.php` file for compatibility with core. * * @package WordPress * @since 5.9.0 @@ -51,7 +51,7 @@ function wp_register_dimensions_support( $block_type ) { * @return array Block dimensions CSS classes and inline styles. */ function wp_apply_dimensions_support( $block_type, $block_attributes ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - if ( wp_skip_dimensions_serialization( $block_type ) ) { + if ( wp_should_skip_block_supports_serialization( $block_type, '__experimentalDimensions' ) ) { return array(); } @@ -63,23 +63,6 @@ function wp_apply_dimensions_support( $block_type, $block_attributes ) { // phpc return empty( $styles ) ? array() : array( 'style' => implode( ' ', $styles ) ); } -/** - * Checks whether serialization of the current block's dimensions properties - * should occur. - * - * @since 5.9.0 - * @access private - * - * @param WP_Block_type $block_type Block type. - * @return bool Whether to serialize spacing support styles & classes. - */ -function wp_skip_dimensions_serialization( $block_type ) { - $dimensions_support = _wp_array_get( $block_type->supports, array( '__experimentalDimensions' ), false ); - return is_array( $dimensions_support ) && - array_key_exists( '__experimentalSkipSerialization', $dimensions_support ) && - $dimensions_support['__experimentalSkipSerialization']; -} - // Register the block support. WP_Block_Supports::get_instance()->register( 'dimensions', diff --git a/wp-includes/block-supports/elements.php b/wp-includes/block-supports/elements.php index ccc21860ff..4c813f620b 100644 --- a/wp-includes/block-supports/elements.php +++ b/wp-includes/block-supports/elements.php @@ -21,6 +21,13 @@ function wp_render_elements_support( $block_content, $block ) { return $block_content; } + $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block['blockName'] ); + $skip_link_color_serialization = wp_should_skip_block_supports_serialization( $block_type, 'color', 'link' ); + + if ( $skip_link_color_serialization ) { + return $block_content; + } + $link_color = null; if ( ! empty( $block['attrs'] ) ) { $link_color = _wp_array_get( $block['attrs'], array( 'style', 'elements', 'link', 'color', 'text' ), null ); diff --git a/wp-includes/block-supports/spacing.php b/wp-includes/block-supports/spacing.php index a65bae2f08..f91194469a 100644 --- a/wp-includes/block-supports/spacing.php +++ b/wp-includes/block-supports/spacing.php @@ -44,15 +44,17 @@ function wp_register_spacing_support( $block_type ) { * @return array Block spacing CSS classes and inline styles. */ function wp_apply_spacing_support( $block_type, $block_attributes ) { - if ( wp_skip_spacing_serialization( $block_type ) ) { + if ( wp_should_skip_block_supports_serialization( $block_type, 'spacing' ) ) { return array(); } $has_padding_support = block_has_support( $block_type, array( 'spacing', 'padding' ), false ); $has_margin_support = block_has_support( $block_type, array( 'spacing', 'margin' ), false ); + $skip_padding = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'padding' ); + $skip_margin = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'margin' ); $styles = array(); - if ( $has_padding_support ) { + if ( $has_padding_support && ! $skip_padding ) { $padding_value = _wp_array_get( $block_attributes, array( 'style', 'spacing', 'padding' ), null ); if ( is_array( $padding_value ) ) { foreach ( $padding_value as $key => $value ) { @@ -63,7 +65,7 @@ function wp_apply_spacing_support( $block_type, $block_attributes ) { } } - if ( $has_margin_support ) { + if ( $has_margin_support && ! $skip_margin ) { $margin_value = _wp_array_get( $block_attributes, array( 'style', 'spacing', 'margin' ), null ); if ( is_array( $margin_value ) ) { foreach ( $margin_value as $key => $value ) { @@ -77,24 +79,6 @@ function wp_apply_spacing_support( $block_type, $block_attributes ) { return empty( $styles ) ? array() : array( 'style' => implode( ' ', $styles ) ); } -/** - * Checks whether serialization of the current block's spacing properties should - * occur. - * - * @since 5.9.0 - * @access private - * - * @param WP_Block_Type $block_type Block type. - * @return bool Whether to serialize spacing support styles & classes. - */ -function wp_skip_spacing_serialization( $block_type ) { - $spacing_support = _wp_array_get( $block_type->supports, array( 'spacing' ), false ); - - return is_array( $spacing_support ) && - array_key_exists( '__experimentalSkipSerialization', $spacing_support ) && - $spacing_support['__experimentalSkipSerialization']; -} - // Register the block support. WP_Block_Supports::get_instance()->register( 'spacing', diff --git a/wp-includes/block-supports/typography.php b/wp-includes/block-supports/typography.php index cf219dc493..a19aba7c57 100644 --- a/wp-includes/block-supports/typography.php +++ b/wp-includes/block-supports/typography.php @@ -81,8 +81,7 @@ function wp_apply_typography_support( $block_type, $block_attributes ) { return array(); } - $skip_typography_serialization = _wp_array_get( $typography_supports, array( '__experimentalSkipSerialization' ), false ); - if ( $skip_typography_serialization ) { + if ( wp_should_skip_block_supports_serialization( $block_type, 'typography' ) ) { return array(); } @@ -99,7 +98,7 @@ function wp_apply_typography_support( $block_type, $block_attributes ) { $has_text_decoration_support = _wp_array_get( $typography_supports, array( '__experimentalTextDecoration' ), false ); $has_text_transform_support = _wp_array_get( $typography_supports, array( '__experimentalTextTransform' ), false ); - if ( $has_font_size_support ) { + if ( $has_font_size_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'fontSize' ) ) { $has_named_font_size = array_key_exists( 'fontSize', $block_attributes ); $has_custom_font_size = isset( $block_attributes['style']['typography']['fontSize'] ); @@ -110,7 +109,7 @@ function wp_apply_typography_support( $block_type, $block_attributes ) { } } - if ( $has_font_family_support ) { + if ( $has_font_family_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'fontFamily' ) ) { $has_named_font_family = array_key_exists( 'fontFamily', $block_attributes ); $has_custom_font_family = isset( $block_attributes['style']['typography']['fontFamily'] ); @@ -129,42 +128,42 @@ function wp_apply_typography_support( $block_type, $block_attributes ) { } } - if ( $has_font_style_support ) { + if ( $has_font_style_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'fontStyle' ) ) { $font_style = wp_typography_get_css_variable_inline_style( $block_attributes, 'fontStyle', 'font-style' ); if ( $font_style ) { $styles[] = $font_style; } } - if ( $has_font_weight_support ) { + if ( $has_font_weight_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'fontWeight' ) ) { $font_weight = wp_typography_get_css_variable_inline_style( $block_attributes, 'fontWeight', 'font-weight' ); if ( $font_weight ) { $styles[] = $font_weight; } } - if ( $has_line_height_support ) { + if ( $has_line_height_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'lineHeight' ) ) { $has_line_height = isset( $block_attributes['style']['typography']['lineHeight'] ); if ( $has_line_height ) { $styles[] = sprintf( 'line-height: %s;', $block_attributes['style']['typography']['lineHeight'] ); } } - if ( $has_text_decoration_support ) { + if ( $has_text_decoration_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'textDecoration' ) ) { $text_decoration_style = wp_typography_get_css_variable_inline_style( $block_attributes, 'textDecoration', 'text-decoration' ); if ( $text_decoration_style ) { $styles[] = $text_decoration_style; } } - if ( $has_text_transform_support ) { + if ( $has_text_transform_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'textTransform' ) ) { $text_transform_style = wp_typography_get_css_variable_inline_style( $block_attributes, 'textTransform', 'text-transform' ); if ( $text_transform_style ) { $styles[] = $text_transform_style; } } - if ( $has_letter_spacing_support ) { + if ( $has_letter_spacing_support && ! wp_should_skip_block_supports_serialization( $block_type, 'typography', 'letterSpacing' ) ) { $letter_spacing_style = wp_typography_get_css_variable_inline_style( $block_attributes, 'letterSpacing', 'letter-spacing' ); if ( $letter_spacing_style ) { $styles[] = $letter_spacing_style; diff --git a/wp-includes/block-supports/utils.php b/wp-includes/block-supports/utils.php new file mode 100644 index 0000000000..6e15d5388b --- /dev/null +++ b/wp-includes/block-supports/utils.php @@ -0,0 +1,36 @@ +supports, $path, false ); + + if ( is_array( $skip_serialization ) ) { + return in_array( $feature, $skip_serialization, true ); + } + + return $skip_serialization; +} diff --git a/wp-includes/version.php b/wp-includes/version.php index 20653a818e..960fd1eb7e 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.0-alpha-53075'; +$wp_version = '6.0-alpha-53076'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. diff --git a/wp-settings.php b/wp-settings.php index 355cb689bb..c1bab688c0 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -317,6 +317,7 @@ require ABSPATH . WPINC . '/blocks/index.php'; require ABSPATH . WPINC . '/block-editor.php'; require ABSPATH . WPINC . '/block-patterns.php'; require ABSPATH . WPINC . '/class-wp-block-supports.php'; +require ABSPATH . WPINC . '/block-supports/utils.php'; require ABSPATH . WPINC . '/block-supports/align.php'; require ABSPATH . WPINC . '/block-supports/border.php'; require ABSPATH . WPINC . '/block-supports/colors.php';