首页 > 解决方案 > 将 Container Div 添加到 WordPress 中的每个 Gutenberg-Block

问题描述

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

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

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

而且我很想为每个 Gutenberg 块添加一个额外的复选框,以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',
    } );

} );

它工作得很好,给块一个额外的类/样式。但它不会在块周围包裹一些东西。

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

标签: wordpressreactjswordpress-gutenberggutenberg-blocks

解决方案


如果现在有人(比如我)也需要这个,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 );

推荐阅读