<?php

function wp_register_custom_classname_support($block_type)
{
    $has_custom_classname_support = true;
    if (property_exists($block_type, 'supports')) {
        $has_custom_classname_support = _wp_array_get($block_type->supports, array('customClassName'), true);
    }
    if ($has_custom_classname_support) {
        if (!$block_type->attributes) {
            $block_type->attributes = array();
        }
        if (!array_key_exists('className', $block_type->attributes)) {
            $block_type->attributes['className'] = array('type' => 'string');
        }
    }
}
function wp_apply_custom_classname_support($block_type, $block_attributes)
{
    $has_custom_classname_support = true;
    $attributes = array();
    if (property_exists($block_type, 'supports')) {
        $has_custom_classname_support = _wp_array_get($block_type->supports, array('customClassName'), true);
    }
    if ($has_custom_classname_support) {
        $has_custom_classnames = array_key_exists('className', $block_attributes);
        if ($has_custom_classnames) {
            $attributes['class'] = $block_attributes['className'];
        }
    }
    return $attributes;
}
WP_Block_Supports::get_instance()->register('custom-classname', array('register_attribute' => 'wp_register_custom_classname_support', 'apply' => 'wp_apply_custom_classname_support'));