经过一些挖掘和尝试/错误,我想出了几个解决方案。我在寻找一种“古腾堡”解决方案,这样我就可以避免使用str_replace
.
首先,我们需要将JS排队并包含wp。blocks包
// Add to functions.php
function gutenberg_enqueue() {
wp_enqueue_script(
\'myguten-script\',
// get_template_directory_uri() . \'/js/gutenberg.js\', // For Parent Themes
get_stylesheet_directory_uri() . \'/js/gutenberg.js\', // For Child Themes
array(\'wp-blocks\') // Include wp.blocks Package
);
}
add_action(\'enqueue_block_editor_assets\', \'gutenberg_enqueue\');
接下来,我找到了两种解决方案,第一种可能最适合您的特定用例。
Method #1
使用筛选函数重写默认类。在这种情况下,我们将保留“wp block image”类,只需添加所需的引导类mt-2。但是你可以很容易地添加任何你想要的类。添加下面的代码并创建一个新的图像块,检查它以查看figure标记现在具有新的类。
// Add to your JS file
function setBlockCustomClassName(className, blockName) {
return blockName === \'core/image\' ?
\'wp-block-image mt-2\' :
className;
}
wp.hooks.addFilter(
\'blocks.getBlockDefaultClassName\',
\'my-plugin/set-block-custom-class-name\',
setBlockCustomClassName
);
<小时>
Method #2
在侧栏的“块样式设置”中添加设置,以向图像添加类。
// Add to your JS file
wp.blocks.registerBlockStyle(\'core/image\', {
name: \'test-image-class\',
label: \'Test Class\'
});
这将添加您的类,但不幸的是,Gutenberg在类之前附加了is style,因此它将生成is style test image类。您必须相应地调整CSS。
<小时>
Method #3
通过“块>高级>附加CSS类”选项手动添加类。显然,需要为每个图像块添加该类。
<人力资源>
Note: 当添加或编辑上面的任何JS时,我需要删除块,刷新页面,然后重新添加块,以避免
block validation error.
References:
Block Style Variations
blocks.getBlockDefaultClassName