The design I am working with calls for each Gutenberg block to have a coloured background (white in this case) with max-width: 1160px and the content within to have max-width: 800px and centered. Similar to the image below:

enter image description here

Which would need a setup like this:

<main class="site-background">
    <div class="width-1160">
        <p class="width-800">Some text content...</p>
    </div>
</main>

At this time we are only using core Gutenberg blocks but the markup it produces is similar to the below, without the containing <div>:

<main class="site-background">
    <p class="width-800">Some text content...</p>
</main>

Is there a way to add a containing <div> to all Gutenberg content blocks that will be safe when core updates?

1 Answer
1

I’m sure there are other ways e.g. with CSS only or Add custom class to core blocks in Gutenberg, but regarding:

Add a containing DIV to core Gutenberg blocks

one way could be with the render_block filter:

add_filter( 'render_block', function( $block_content, $block ) {
    // Target core/* and core-embed/* blocks.
    if ( preg_match( '~^core/|core-embed/~', $block['blockName'] ) ) {
       $block_content = sprintf( '<div class="some__class">%s</div>', $block_content );
    }
    return $block_content;
}, PHP_INT_MAX - 1, 2 );

to div-wrap the core blocks on the frontend.

Changing the HTML layout might affect the current style of the site.

Leave a Reply

Your email address will not be published. Required fields are marked *