我正在尝试向列表块添加一个类(core/list
) 在古腾堡。不幸的是,它看起来像是因为某些块(如列表和段落)没有标准的默认类名wp-block-{name}
无法使用blocks.getBlockDefaultClassName
滤器
为了解决这个问题,我使用了blocks.getSaveContent.extraProps
过滤器,它似乎使我能够将一个类添加到所有还没有类的块中。下面的代码是我如何工作的。它正在添加added-class-name
如列表和段落等。
function addBlockClassName( className ) {
return Object.assign( className, { class: \'added-class-name\' } );
}
wp.hooks.addFilter(
\'blocks.getSaveContent.extraProps\',
\'gdt-guten-plugin/add-block-class-name\',
addBlockClassName
);
我是这样排队的:
function gdt_blocks_class_rename() {
wp_enqueue_script(
\'gdt-plugin-blacklist-blocks\',
get_stylesheet_directory_uri() . \'/dist/guten-addons.js\',
array( \'wp-blocks\' )
);
}
add_action( \'enqueue_block_editor_assets\', \'gdt_blocks_class_rename\' );
然而,我想做的是只向列表块添加一个类?这能做到吗?
最合适的回答,由SO网友:MrVanilla 整理而成
答案中有标记为正确的问题。它将破坏alignment类的功能,实际上并没有添加到类列表中,而是覆盖它。您将只能对整个主题使用一种解决方案。
相反,您可以使用;registerBlockStyle();将样式变体添加到列表块,并设置;isDefault“;为true,它可以使用该类/样式,但仍然可以跳过使用它,或者如果需要,可以添加多个变体。
wp。domReady()确保在应该加载时加载并应用更改
wp.domReady( () => {
wp.blocks.registerBlockStyle( \'core/list\', {
name: \'custom-list-style\',
label: \'Custom list style\',
isDefault: true
} );
} );
SO网友:Shibi
这个钩子有第二个和第三个参数,可以使用第二个参数来获取块类型。
https://wordpress.org/gutenberg/handbook/extensibility/extending-blocks/
一种过滤器,适用于在save函数中返回WP元素的所有块。此过滤器用于向save函数的根元素添加额外的道具。例如:为该元素添加类名、id或任何有效的属性。
It receives the current props of the save
element, the block type and the block attributes as arguments.function addBlockClassName( props, blockType ) {
if(blockType.name === \'core/list\') {
return Object.assign( props, { class: \'wp-block-list\' } );
}
return props;
}
wp.hooks.addFilter(
\'blocks.getSaveContent.extraProps\',
\'gdt-guten-plugin/add-block-class-name\',
addBlockClassName
);