wp/wp-includes/block-supports/custom-classname.php
changeset 18 be944660c56a
child 21 48c4eec2b7e6
equal deleted inserted replaced
17:34716fd837a4 18:be944660c56a
       
     1 <?php
       
     2 /**
       
     3  * Custom classname block support flag.
       
     4  *
       
     5  * @package WordPress
       
     6  * @since 5.6.0
       
     7  */
       
     8 
       
     9 /**
       
    10  * Registers the custom classname block attribute for block types that support it.
       
    11  *
       
    12  * @since 5.6.0
       
    13  * @access private
       
    14  *
       
    15  * @param WP_Block_Type $block_type Block Type.
       
    16  */
       
    17 function wp_register_custom_classname_support( $block_type ) {
       
    18 	$has_custom_classname_support = block_has_support( $block_type, array( 'customClassName' ), true );
       
    19 
       
    20 	if ( $has_custom_classname_support ) {
       
    21 		if ( ! $block_type->attributes ) {
       
    22 			$block_type->attributes = array();
       
    23 		}
       
    24 
       
    25 		if ( ! array_key_exists( 'className', $block_type->attributes ) ) {
       
    26 			$block_type->attributes['className'] = array(
       
    27 				'type' => 'string',
       
    28 			);
       
    29 		}
       
    30 	}
       
    31 }
       
    32 
       
    33 /**
       
    34  * Add the custom classnames to the output.
       
    35  *
       
    36  * @since 5.6.0
       
    37  * @access private
       
    38  *
       
    39  * @param  WP_Block_Type $block_type       Block Type.
       
    40  * @param  array         $block_attributes Block attributes.
       
    41  *
       
    42  * @return array Block CSS classes and inline styles.
       
    43  */
       
    44 function wp_apply_custom_classname_support( $block_type, $block_attributes ) {
       
    45 	$has_custom_classname_support = block_has_support( $block_type, array( 'customClassName' ), true );
       
    46 	$attributes                   = array();
       
    47 	if ( $has_custom_classname_support ) {
       
    48 		$has_custom_classnames = array_key_exists( 'className', $block_attributes );
       
    49 
       
    50 		if ( $has_custom_classnames ) {
       
    51 			$attributes['class'] = $block_attributes['className'];
       
    52 		}
       
    53 	}
       
    54 
       
    55 	return $attributes;
       
    56 }
       
    57 
       
    58 // Register the block support.
       
    59 WP_Block_Supports::get_instance()->register(
       
    60 	'custom-classname',
       
    61 	array(
       
    62 		'register_attribute' => 'wp_register_custom_classname_support',
       
    63 		'apply'              => 'wp_apply_custom_classname_support',
       
    64 	)
       
    65 );