gpt4 book ai didi

wordpress - 如何禁用核心 block 的工具栏?这可能吗?

转载 作者:行者123 更新时间:2023-12-05 05:11:18 24 4
gpt4 key购买 nike

我试图禁用所有核心 block 的工具栏,以防止编辑器不必要地格式化内容。这可能吗?

我目前的做法是:

wp.blocks.getBlockTypes().forEach((blockType) => {

// unregister all default styles (from the right sidebar)

let blockName = blockType.name;

if ( blockType.hasOwnProperty('styles')) {
blockType.styles.forEach( (style) => {
wp.blocks.unregisterBlockStyle( blockName, style.name );
});
}

});

我能否以某种方式访问​​此循环中的工具栏?我是否正确理解我必须覆盖核心 block 的编辑和保存方法,可能使用过滤器?

谢谢,帕特里克

最佳答案

我刚刚解决了这个问题,但与预期的不同。基本上,我的解决方案是注销所需的核心 block ,更改编辑和保存方法,然后重新注册 block 。

Riad Benguella 的这篇博客文章提供了很大的帮助: https://riad.blog/2017/10/16/one-thousand-and-one-way-to-extend-gutenberg-today/

这是一个基于 core/quote block 的示例:

const TextControl = wp.components.TextControl;

import './style.scss';
import './editor.scss';

wp.domReady( () => {

let unregisteredBlock = wp.blocks.unregisterBlockType('core/quote');

unregisteredBlock.title = 'Quotation';
unregisteredBlock.icon = 'format-quote';

unregisteredBlock.edit = ({ attributes, setAttributes} ) => {

const updateFirstValue = ( val ) => {
setAttributes({
value: val
});
};
const updateSecondValue = ( val ) => {
setAttributes({
citation: val
});
};

return (
<div>
<TextControl
label='Quote'
value={ attributes.value }
onChange={ updateFirstValue }
/>
<TextControl
label='Citation'
value={ attributes.citation }
onChange={ updateSecondValue }
/>
</div>
);

};

unregisteredBlock.save = ( { attributes, className } ) => {
return (
<blockquote className={className}>
<p>{attributes.value}</p>
<cite>{attributes.citation}</cite>
</blockquote>
)
};

wp.blocks.registerBlockType('core/quote', unregisteredBlock);

});

原则上,编辑和保存方法都在这里被替换,只有 block 属性从核心 block 中重用。由于使用了新元素来输入内容,因此工具栏不再是问题。

希望对遇到同样问题的人有所帮助。

干杯,帕特里克

关于wordpress - 如何禁用核心 block 的工具栏?这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55568151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com