WP_Block_Supports::apply_block_supportspublicWP 5.6.0

Generates an array of HTML attributes, such as classes, by applying to the given block all of the features that the block supports.

Метод класса: WP_Block_Supports{}

Хуков нет.

Возвращает

Строку[]. Array of HTML attribute values keyed by their name.

Использование

$WP_Block_Supports = new WP_Block_Supports();
$WP_Block_Supports->apply_block_supports();

Список изменений

С версии 5.6.0 Введена.

Код WP_Block_Supports::apply_block_supports() WP 7.1

public function apply_block_supports() {
	if ( ! is_array( self::$block_to_render ) ) {
		return array();
	}

	$block_type = WP_Block_Type_Registry::get_instance()->get_registered(
		self::$block_to_render['blockName']
	);

	// If no render_callback, assume styles have been previously handled.
	if ( ! $block_type ) {
		return array();
	}

	$block_attributes = array_key_exists( 'attrs', self::$block_to_render ) && is_array( self::$block_to_render['attrs'] )
		? $block_type->prepare_attributes_for_render( self::$block_to_render['attrs'] )
		: array();

	$output = array();
	foreach ( $this->block_supports as $block_support_config ) {
		if ( ! isset( $block_support_config['apply'] ) ) {
			continue;
		}

		$new_attributes = call_user_func(
			$block_support_config['apply'],
			$block_type,
			$block_attributes
		);

		if ( ! empty( $new_attributes ) ) {
			foreach ( $new_attributes as $attribute_name => $attribute_value ) {
				if ( ! is_scalar( $attribute_value ) || is_bool( $attribute_value ) ) {
					continue;
				}
				$attribute_value = (string) $attribute_value;
				if ( ! array_key_exists( $attribute_name, $output ) || '' === $output[ $attribute_name ] ) {
					$output[ $attribute_name ] = $attribute_value;
				} else {
					$output[ $attribute_name ] .= " $attribute_value";
				}
			}
		}
	}

	return $output;
}