wp_apply_spacing_support

The timeline below displays how wordpress function wp_apply_spacing_support has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Adds CSS classes for block spacing to the incoming attributes array.
 * This will be applied to the block markup in the front-end.
 *
 * @since 5.8.0
 * @since 6.1.0 Implemented the style engine to generate CSS and classnames.
 * @access private
 *
 * @param WP_Block_Type $block_type       Block Type.
 * @param array         $block_attributes Block attributes.
 * @return array Block spacing CSS classes and inline styles.
 */
function wp_apply_spacing_support($block_type, $block_attributes)
{
    if (wp_should_skip_block_supports_serialization($block_type, 'spacing')) {
        return array();
    }
    $attributes = 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);
    $block_styles = isset($block_attributes['style']) ? $block_attributes['style'] : null;
    if (!$block_styles) {
        return $attributes;
    }
    $skip_padding = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'padding');
    $skip_margin = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'margin');
    $spacing_block_styles = array('padding' => null, 'margin' => null);
    if ($has_padding_support && !$skip_padding) {
        $spacing_block_styles['padding'] = isset($block_styles['spacing']['padding']) ? $block_styles['spacing']['padding'] : null;
    }
    if ($has_margin_support && !$skip_margin) {
        $spacing_block_styles['margin'] = isset($block_styles['spacing']['margin']) ? $block_styles['spacing']['margin'] : null;
    }
    $styles = wp_style_engine_get_styles(array('spacing' => $spacing_block_styles));
    if (!empty($styles['css'])) {
        $attributes['style'] = $styles['css'];
    }
    return $attributes;
}

WordPress Version: 6.2

/**
 * Adds CSS classes for block spacing to the incoming attributes array.
 * This will be applied to the block markup in the front-end.
 *
 * @since 5.8.0
 * @since 6.1.0 Implemented the style engine to generate CSS and classnames.
 * @access private
 *
 * @param WP_Block_Type $block_type       Block Type.
 * @param array         $block_attributes Block attributes.
 * @return array Block spacing CSS classes and inline styles.
 */
function wp_apply_spacing_support($block_type, $block_attributes)
{
    if (wp_should_skip_block_supports_serialization($block_type, 'spacing')) {
        return array();
    }
    $attributes = 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);
    $block_styles = isset($block_attributes['style']) ? $block_attributes['style'] : null;
    if (!$block_styles) {
        return $attributes;
    }
    $skip_padding = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'padding');
    $skip_margin = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'margin');
    $spacing_block_styles = array();
    $spacing_block_styles['padding'] = ($has_padding_support && !$skip_padding) ? _wp_array_get($block_styles, array('spacing', 'padding'), null) : null;
    $spacing_block_styles['margin'] = ($has_margin_support && !$skip_margin) ? _wp_array_get($block_styles, array('spacing', 'margin'), null) : null;
    $styles = wp_style_engine_get_styles(array('spacing' => $spacing_block_styles));
    if (!empty($styles['css'])) {
        $attributes['style'] = $styles['css'];
    }
    return $attributes;
}

WordPress Version: 6.1

/**
 * Add CSS classes for block spacing to the incoming attributes array.
 * This will be applied to the block markup in the front-end.
 *
 * @since 5.8.0
 * @since 6.1.0 Implemented the style engine to generate CSS and classnames.
 * @access private
 *
 * @param WP_Block_Type $block_type       Block Type.
 * @param array         $block_attributes Block attributes.
 * @return array Block spacing CSS classes and inline styles.
 */
function wp_apply_spacing_support($block_type, $block_attributes)
{
    if (wp_should_skip_block_supports_serialization($block_type, 'spacing')) {
        return array();
    }
    $attributes = 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);
    $block_styles = isset($block_attributes['style']) ? $block_attributes['style'] : null;
    if (!$block_styles) {
        return $attributes;
    }
    $skip_padding = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'padding');
    $skip_margin = wp_should_skip_block_supports_serialization($block_type, 'spacing', 'margin');
    $spacing_block_styles = array();
    $spacing_block_styles['padding'] = ($has_padding_support && !$skip_padding) ? _wp_array_get($block_styles, array('spacing', 'padding'), null) : null;
    $spacing_block_styles['margin'] = ($has_margin_support && !$skip_margin) ? _wp_array_get($block_styles, array('spacing', 'margin'), null) : null;
    $styles = wp_style_engine_get_styles(array('spacing' => $spacing_block_styles));
    if (!empty($styles['css'])) {
        $attributes['style'] = $styles['css'];
    }
    return $attributes;
}

WordPress Version: 5.9

/**
 * Add CSS classes for block spacing to the incoming attributes array.
 * This will be applied to the block markup in the front-end.
 *
 * @since 5.8.0
 * @access private
 *
 * @param WP_Block_Type $block_type       Block Type.
 * @param array         $block_attributes Block attributes.
 * @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)) {
        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);
    $styles = array();
    if ($has_padding_support) {
        $padding_value = _wp_array_get($block_attributes, array('style', 'spacing', 'padding'), null);
        if (is_array($padding_value)) {
            foreach ($padding_value as $key => $value) {
                $styles[] = sprintf('padding-%s: %s;', $key, $value);
            }
        } elseif (null !== $padding_value) {
            $styles[] = sprintf('padding: %s;', $padding_value);
        }
    }
    if ($has_margin_support) {
        $margin_value = _wp_array_get($block_attributes, array('style', 'spacing', 'margin'), null);
        if (is_array($margin_value)) {
            foreach ($margin_value as $key => $value) {
                $styles[] = sprintf('margin-%s: %s;', $key, $value);
            }
        } elseif (null !== $margin_value) {
            $styles[] = sprintf('margin: %s;', $margin_value);
        }
    }
    return empty($styles) ? array() : array('style' => implode(' ', $styles));
}

WordPress Version: 5.8

/**
 * Add CSS classes for block spacing to the incoming attributes array.
 * This will be applied to the block markup in the front-end.
 *
 * @since 5.8.0
 * @access private
 *
 * @param WP_Block_Type $block_type       Block Type.
 * @param array         $block_attributes Block attributes.
 *
 * @return array Block spacing CSS classes and inline styles.
 */
function wp_apply_spacing_support($block_type, $block_attributes)
{
    $has_padding_support = wp_has_spacing_feature_support($block_type, 'padding');
    $has_margin_support = wp_has_spacing_feature_support($block_type, 'margin');
    $styles = array();
    if ($has_padding_support) {
        $padding_value = _wp_array_get($block_attributes, array('style', 'spacing', 'padding'), null);
        if (null !== $padding_value) {
            foreach ($padding_value as $key => $value) {
                $styles[] = sprintf('padding-%s: %s;', $key, $value);
            }
        }
    }
    if ($has_margin_support) {
        $margin_value = _wp_array_get($block_attributes, array('style', 'spacing', 'margin'), null);
        if (null !== $margin_value) {
            foreach ($margin_value as $key => $value) {
                $styles[] = sprintf('margin-%s: %s;', $key, $value);
            }
        }
    }
    return empty($styles) ? array() : array('style' => implode(' ', $styles));
}