diff options
Diffstat (limited to 'wp-includes/block-supports/align.php')
-rw-r--r-- | wp-includes/block-supports/align.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/wp-includes/block-supports/align.php b/wp-includes/block-supports/align.php new file mode 100644 index 0000000..35591a1 --- /dev/null +++ b/wp-includes/block-supports/align.php @@ -0,0 +1,65 @@ +<?php +/** + * Align block support flag. + * + * @package WordPress + * @since 5.6.0 + */ + +/** + * Registers the align block attribute for block types that support it. + * + * @since 5.6.0 + * @access private + * + * @param WP_Block_Type $block_type Block Type. + */ +function wp_register_alignment_support( $block_type ) { + $has_align_support = block_has_support( $block_type, 'align', false ); + if ( $has_align_support ) { + if ( ! $block_type->attributes ) { + $block_type->attributes = array(); + } + + if ( ! array_key_exists( 'align', $block_type->attributes ) ) { + $block_type->attributes['align'] = array( + 'type' => 'string', + 'enum' => array( 'left', 'center', 'right', 'wide', 'full', '' ), + ); + } + } +} + +/** + * Adds CSS classes for block alignment to the incoming attributes array. + * This will be applied to the block markup in the front-end. + * + * @since 5.6.0 + * @access private + * + * @param WP_Block_Type $block_type Block Type. + * @param array $block_attributes Block attributes. + * @return array Block alignment CSS classes and inline styles. + */ +function wp_apply_alignment_support( $block_type, $block_attributes ) { + $attributes = array(); + $has_align_support = block_has_support( $block_type, 'align', false ); + if ( $has_align_support ) { + $has_block_alignment = array_key_exists( 'align', $block_attributes ); + + if ( $has_block_alignment ) { + $attributes['class'] = sprintf( 'align%s', $block_attributes['align'] ); + } + } + + return $attributes; +} + +// Register the block support. +WP_Block_Supports::get_instance()->register( + 'align', + array( + 'register_attribute' => 'wp_register_alignment_support', + 'apply' => 'wp_apply_alignment_support', + ) +); |