将Bootstrap按钮样式添加到WordPress中的默认Gutenberg Button块

时间:2019-05-10 13:49:40

标签: wordpress reactjs twitter-bootstrap wordpress-gutenberg gutenberg-blocks

我想将Bootstrap框架中的默认按钮样式与古腾堡的默认按钮一起使用。

我找到了一种解决方案,可以从WordPress删除默认样式并添加一些自己的样式。这是链接:https://www.billerickson.net/block-styles-in-gutenberg/

我正在使用Bill Erickson的代码删除默认样式并添加一个新样式。就我而言,Bootstrap的.btn-primary风格:

wp.domReady( () => {
    wp.blocks.unregisterBlockStyle( 'core/button', 'default' );
    wp.blocks.unregisterBlockStyle( 'core/button', 'outline' );
    wp.blocks.unregisterBlockStyle( 'core/button', 'squared' );

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

    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'btn-primary',
        label: 'Primary',
    } );

} );

这里有两个问题:

  1. WordPress用错误的方式添加了类
  2. 它只添加了一个类,但是Bootstrap至少需要两个

这是添加类后的按钮代码:

<div class="wp-block-button aligncenter is-style-btn-primary">
    <a class="wp-block-button__link" href="#">Button</a>
</div>

如您所见,WordPress在按钮周围的div中添加了新的第二类。 并将is-style-添加到类中。

要在Bootstrap样式中使用按钮块。我需要这样的代码:

<div class="wp-block-button aligncenter is-style-btn-primary">
    <a class="btn btn-primary" href="#">Button</a>
</div>

该类必须位于<a>标记内,我也需要第二个类.btn

是否可以将这两个类添加到<a>标记中?

3 个答案:

答案 0 :(得分:2)

我认为您会发现编写自己的按钮比覆盖现有组件要简单得多。如果您确实想覆盖核心按钮块,则可能需要应用适当的block filters

如果您正在寻找即时解决方案,则Advanced Bootstrap Blocks plugin内的按钮组件来源可能会让您入门,或者可以通过plugin directory安装。

(完全公开:我是该插件的作者。)

答案 1 :(得分:2)

另一种可以解决此问题的方法是使用SCSS @extend

将在按钮块编辑器中显示的第一个注册块样式:

    wp.domReady ( function() {

    wp.blocks.unregisterBlockStyle( 'core/button', 'outline');
    wp.blocks.unregisterBlockStyle( 'core/button', 'fill');
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-default',
        label: 'Bootstrap Default',
        isDefault: true
    });
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-primary',
        label: 'Bootstrap Primary',
    });
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-success',
        label: 'Bootstrap Success',
    });
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-default-lg',
        label: 'Bootstrap Default Large',
    });
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-primary-lg',
        label: 'Bootstrap Primary Large',
    });
    wp.blocks.registerBlockStyle( 'core/button', {
        name: 'bootstrap-success-lg',
        label: 'Bootstrap Success Large',
    }); 

});

然后,我创建了一个_wordpress.scss,它包含在其中并与每种块样式中的规则以及它们扩展的Bootstrap规则一起编译:

.is-style-bootstrap-default > a {
    @extend .btn;
    @extend .btn-default;
}

.is-style-bootstrap-primary > a {
    @extend .btn;
    @extend .btn-primary;
}

.is-style-bootstrap-success > a {
    @extend .btn;
    @extend .btn-success;
}

.is-style-bootstrap-default-lg > a {
    @extend .btn;
    @extend .btn-default;
    @extend .btn-lg;
}

.is-style-bootstrap-primary-lg > a {
    @extend .btn;
    @extend .btn-primary;
    @extend .btn-lg;
}

.is-style-bootstrap-success-lg > a {
    @extend .btn;
    @extend .btn-success;
    @extend .btn-lg;
}

答案 2 :(得分:1)

您可以安装此插件: https://wordpress.org/plugins/wp-bootstrap-blocks/

或者阅读插件代码并创建自己的块,然后还可以为按钮创建自己的自定义样式。