WP_Widget_Block::get_dynamic_classname( string $content ): string

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Calculates the classname to use in the block widget’s container HTML.

Description

Usually this is set to $this->widget_options['classname'] by dynamic_sidebar() . In this case, however, we want to set the classname dynamically depending on the block contained by this block widget.

If a block widget contains a block that has an equivalent legacy widget, we display that legacy widget’s class name. This helps with theme backwards compatibility.

Parameters

$contentstringrequired
The HTML content of the current block widget.

Return

string The classname to use in the block widget’s container HTML.

Source

private function get_dynamic_classname( $content ) {
	$blocks = parse_blocks( $content );

	$block_name = isset( $blocks[0] ) ? $blocks[0]['blockName'] : null;

	switch ( $block_name ) {
		case 'core/paragraph':
			$classname = 'widget_block widget_text';
			break;
		case 'core/calendar':
			$classname = 'widget_block widget_calendar';
			break;
		case 'core/search':
			$classname = 'widget_block widget_search';
			break;
		case 'core/html':
			$classname = 'widget_block widget_custom_html';
			break;
		case 'core/archives':
			$classname = 'widget_block widget_archive';
			break;
		case 'core/latest-posts':
			$classname = 'widget_block widget_recent_entries';
			break;
		case 'core/latest-comments':
			$classname = 'widget_block widget_recent_comments';
			break;
		case 'core/tag-cloud':
			$classname = 'widget_block widget_tag_cloud';
			break;
		case 'core/categories':
			$classname = 'widget_block widget_categories';
			break;
		case 'core/audio':
			$classname = 'widget_block widget_media_audio';
			break;
		case 'core/video':
			$classname = 'widget_block widget_media_video';
			break;
		case 'core/image':
			$classname = 'widget_block widget_media_image';
			break;
		case 'core/gallery':
			$classname = 'widget_block widget_media_gallery';
			break;
		case 'core/rss':
			$classname = 'widget_block widget_rss';
			break;
		default:
			$classname = 'widget_block';
	}

	/**
	 * The classname used in the block widget's container HTML.
	 *
	 * This can be set according to the name of the block contained by the block widget.
	 *
	 * @since 5.8.0
	 *
	 * @param string $classname  The classname to be used in the block widget's container HTML,
	 *                           e.g. 'widget_block widget_text'.
	 * @param string $block_name The name of the block contained by the block widget,
	 *                           e.g. 'core/paragraph'.
	 */
	return apply_filters( 'widget_block_dynamic_classname', $classname, $block_name );
}

Hooks

apply_filters( ‘widget_block_dynamic_classname’, string $classname, string $block_name )

The classname used in the block widget’s container HTML.

Changelog

VersionDescription
5.8.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.