customization - Add a containing DIV to core Gutenberg blocks

admin2025-06-02  2

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:

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?

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:

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?

Share Improve this question asked Feb 22, 2019 at 11:17 BagseyeBagseye 691 silver badge12 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

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.

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1748876657a314457.html

最新回复(0)