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));
}