将 Container Div 添加到 WordPress 中的每个古腾堡块

Cra*_*ray 2 wordpress reactjs wordpress-gutenberg gutenberg-blocks

我正在使用 Gutenberg 编辑器和 Bootstrap CSS 框架。默认情况下,古腾堡块周围没有容器或类似的东西。

有些块有一个alignwidealignfull选项,可以在它们周围添加类似容器之类的东西。这些选项适用于封面图像或段落。

但标题块(默认情况下)没有这样的选项。

我很想为每个古腾堡块添加一个额外的复选框,以div在其周围切换一个额外的容器。不只是一个班级。

我找到了一些可以为每个古腾堡博客添加额外风格的东西:https://www.billerickson.net/block-styles-in-gutenberg/

这是那里的代码:

wp.domReady( () => {

    wp.blocks.registerBlockStyle( 'core/heading', {
        name: 'default',
        label: 'Default',
        isDefault: true,
    } );

    wp.blocks.registerBlockStyle( 'core/heading', {
        name: 'alt',
        label: 'Alternate',
    } );

} );
Run Code Online (Sandbox Code Playgroud)

它效果很好,为块提供了额外的类/风格。但它并没有将任何东西包裹在块周围。

是否有任何选项可以将容器切换(添加类)之类的东西添加div.container块中?

小智 7

如果有人也需要这个(像我一样),现在 WordPress 已经有另一个更容易实现的过滤器,称为render_block

https://developer.wordpress.org/reference/hooks/render_block/

这是一个例子

    function wporg_block_wrapper( $block_content, $block ) {
        if ( $block['blockName'] === 'core/paragraph' ) {
            $content = '<div class="wp-block-paragraph">';
            $content .= $block_content;
            $content .= '</div>';
            return $content;
        } elseif ( $block['blockName'] === 'core/heading' ) {
            $content = '<div class="wp-block-heading">';
            $content .= $block_content;
            $content .= '</div>';
            return $content;
        }
        return $block_content;
    }

    add_filter( 'render_block', 'wporg_block_wrapper', 10, 2 );
Run Code Online (Sandbox Code Playgroud)