自定义Gutenberg块未在前端使用样式进行渲染

时间:2019-06-07 作者:Doug Wollison

我已经注册了一个自定义块,它基本上是其他内容的包装,带有一些背景颜色选项。

这是我在后端的注册码:

function mytheme_register_box_block() {
    register_block_type( \'mytheme/box\', array(
        \'attributes\' => array(
            \'className\' => array(
                \'type\' => \'string\',
                \'default\' => \'\',
            ),
        ),
        \'supports\' => array(
            \'customClassName\' => false,
        ),
        \'editor_script\' => \'mytheme-editor\',
    ) );
}
add_action( \'init\', \'mytheme_register_box_block\' );
以下是我的编辑器脚本导入的块代码:

const { InnerBlocks } = wp.editor;

export default {
    title: \'Box\',
    description: \'Wrap content within an area to apply a colorscheme to.\',
    icon: \'grid-view\',
    category: \'layout\',
    attributes: {
        className: {
            type: \'string\',
        },
    },
    styles: [
        {
            name: \'default\',
            label: \'Grey\',
            isDefault: true,
        },
        {
            name: \'green\',
            label: \'Green\',
        },
        {
            name: \'orange\',
            label: \'Orange\',
        },
        {
            name: \'blue\',
            label: \'Blue\',
        },
        {
            name: \'cyan\',
            label: \'Cyan\',
        },
    ],
    edit: props => {
        return (
            <div className={ props.className }>
                { ( typeof props.insertBlocksAfter !== \'undefined\' ) ? <InnerBlocks /> : <div>Lorem ipsum dolor sit amet.</div> }
            </div>
        )
    },
    save: ( { className } ) => {
        return (
            <div className={ className }>
                <InnerBlocks.Content />
            </div>
        )
    },
};
在Gutenberg中,块渲染很好并应用了样式,但当它打印在前端时,只需渲染而不应用样式。

<div class="wp-block-mytheme-box">...</div>
Theattributes 我在register\\u block\\u type调用中添加的列表,我只是想尝试让它工作,但没有用。我不确定我错过了什么。

1 个回复
最合适的回答,由SO网友:Doug Wollison 整理而成

据我所知\'customClassName\' => false 在中的supports数组中register_block_type 防止将实际样式类保存到页面的原始文本中。我假设它会在the_content 当它解析块时。事实上,在PHP端注册它毫无意义,因为它都是通过javascript编辑和编译的。

尽管如此,现在我仍然坚持在这个块上允许自定义类名,尽管我总是可以像使用文本设置一样在CSS中隐藏该面板(因为我可以选择不使用自定义/预设字体大小,但不能出于某种原因使用大写)。

相关推荐

如何覆盖Gutenberg管理员的css

我需要建议如何修改古腾堡的核心CSS。我的问题是:轮廓和块标签消失了,我希望它们固定,在每个块上始终可见,而不仅仅是在焦点上。我发现GB是从一种叫做wp-admin/load-styles.php 这基本上让我一事无成。所有样式通过该load-styles.php 文件我不知道在哪里可以找到那门课的大纲。此外,我在任何地方找到的大多数CSS文件都是x4缩小的,并且是RTL的替代品。我应该修改哪个文件及其版本?或者可能还有另一种方法?