[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Spacing block support flag. 4 * 5 * For backwards compatibility, this remains separate to the dimensions.php 6 * block support despite both belonging under a single panel in the editor. 7 * 8 * @package WordPress 9 * @since 5.8.0 10 */ 11 12 /** 13 * Registers the style block attribute for block types that support it. 14 * 15 * @since 5.8.0 16 * @access private 17 * 18 * @param WP_Block_Type $block_type Block Type. 19 */ 20 function wp_register_spacing_support( $block_type ) { 21 $has_spacing_support = block_has_support( $block_type, array( 'spacing' ), false ); 22 23 // Setup attributes and styles within that if needed. 24 if ( ! $block_type->attributes ) { 25 $block_type->attributes = array(); 26 } 27 28 if ( $has_spacing_support && ! array_key_exists( 'style', $block_type->attributes ) ) { 29 $block_type->attributes['style'] = array( 30 'type' => 'object', 31 ); 32 } 33 } 34 35 /** 36 * Adds CSS classes for block spacing to the incoming attributes array. 37 * This will be applied to the block markup in the front-end. 38 * 39 * @since 5.8.0 40 * @since 6.1.0 Implemented the style engine to generate CSS and classnames. 41 * @access private 42 * 43 * @param WP_Block_Type $block_type Block Type. 44 * @param array $block_attributes Block attributes. 45 * @return array Block spacing CSS classes and inline styles. 46 */ 47 function wp_apply_spacing_support( $block_type, $block_attributes ) { 48 if ( wp_should_skip_block_supports_serialization( $block_type, 'spacing' ) ) { 49 return array(); 50 } 51 52 $attributes = array(); 53 $has_padding_support = block_has_support( $block_type, array( 'spacing', 'padding' ), false ); 54 $has_margin_support = block_has_support( $block_type, array( 'spacing', 'margin' ), false ); 55 $block_styles = isset( $block_attributes['style'] ) ? $block_attributes['style'] : null; 56 57 if ( ! $block_styles ) { 58 return $attributes; 59 } 60 61 $skip_padding = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'padding' ); 62 $skip_margin = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'margin' ); 63 $spacing_block_styles = array(); 64 $spacing_block_styles['padding'] = $has_padding_support && ! $skip_padding ? _wp_array_get( $block_styles, array( 'spacing', 'padding' ), null ) : null; 65 $spacing_block_styles['margin'] = $has_margin_support && ! $skip_margin ? _wp_array_get( $block_styles, array( 'spacing', 'margin' ), null ) : null; 66 $styles = wp_style_engine_get_styles( array( 'spacing' => $spacing_block_styles ) ); 67 68 if ( ! empty( $styles['css'] ) ) { 69 $attributes['style'] = $styles['css']; 70 } 71 72 return $attributes; 73 } 74 75 // Register the block support. 76 WP_Block_Supports::get_instance()->register( 77 'spacing', 78 array( 79 'register_attribute' => 'wp_register_spacing_support', 80 'apply' => 'wp_apply_spacing_support', 81 ) 82 );
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Sun Jun 4 08:20:02 2023 | Cross-referenced by PHPXref |