Adding block class to widgets

When registering a sidebar, you can set the “before_widget” value to include some classes that WordPress will define. With Gutenberg, you can now use blocks in your sidebars – yay! However, that “before_widget” class by default does not include anything about the block that is used so it can be a challenge to custom style it based on the block. This small code snippet will generate a custom class to add to the widget based on the block name.

Registering a sidebar

register_sidebar( array(
	'name' => 'Footer',
	'id' => 'footer',
	'before_widget' => '<div id="%1$s" class="%2$s">',
	'after_widget' => '</div>',
) );

Custom code to add

add_filter( 'widget_block_dynamic_classname', function( $classname, $block_name ) {
	$classname .= ' ' . sanitize_title( $block_name );
	return $classname;
}, 10, 2);

Before, the end result looked like this:

<div id="block-8" class="widget_block">
...
</div>

Now, our end result looks like this:

<div id="block-8" class="widget_block core-columns">
...
</div>

Now we can use .core-columns CSS class to customize the styling within this block.