Я только что решил проблему, но не так, как предполагалось.
По сути, решение для меня состояло в том, чтобы отменить регистрацию необходимых блоков ядра, внести изменения в методы редактирования и сохранения, а затем заново зарегистрировать блоки.
Большую помощь мне оказала статья в блоге Риада Бенгуэллы:
https://riad.blog/2017/10/16/one-thousand-and-one-way-to-extend-gutenberg-today/
Вот пример, основанный на блоке core / quote:
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);
});
В принципе здесь заменяются и метод редактирования, и метод сохранения, из базовых блоков повторно используются только атрибуты блока. В связи с тем, что для ввода контента используются новые элементы, панели инструментов больше не являются проблемой.
Надеюсь, это поможет кому-то, у кого такая же проблема.
Cheers,
Patrik