Сначала я просто хотел расширить один из блоков Wordpress Gutenberg. Я выбрал блок «ядро / код». Я добавил тег h2 для заголовка после содержимого по умолчанию, который работал нормально. Тогда я решил изменить тег h2 на тег p. Как я понимаю, мне нужно добавить устаревший массив в объект настроек. Я сделал это, но получаю эту ошибку:
Content generated by `save` function:
<pre><code>undefined
Содержание получено из тела сообщения:
<p>sdsd</p>
изменено!
Мой код:
const enableExtendOnBlocks = [
'core/code',
];
function addAttributes( settings, name ) {
if ( ! enableExtendOnBlocks.includes( name ) ) {
return settings;
}
if( typeof settings.attributes !== 'undefined' ){
settings.attributes = Object.assign( settings.attributes, {
vista:{
type: 'string',
default: 'vista',
source: 'html',
selector: 'p',
}
});
settings.title = 'My Code';
const oldAtt = {
...settings.attributes,
vista: {
type: 'string',
source: 'html',
selector: 'h2',
default: 'vista',
},
};
settings.deprecated = [
{
attributes: oldAtt,
save: function (oldAtt) {
return (
<>
<pre>
<code>{ escape( oldAtt.content ) }
); },}]; } вернуть настройки; } wp.hooks.addFilter ('blocks.registerBlockType', 'extend-block-example / custom-attribute', addAttributes); const withInspectorControls = createHigherOrderComponent ((BlockEdit) => {return (props) => {if (! enableExtendOnBlocks.include (props.name)) {return ; } const onChangeVista = (vista) => {props.setAttributes ({vista: vista}); }; возврат ( onChangeVista (vista)} /> ); }; }, "withInspectorControl"); wp.hooks.addFilter ('editor.BlockEdit', 'my-plugin / with-inspector-controls', withInspectorControls); function wpse298225GallerySaveElement (element, blockType, attribute) {if (blockType.name! == 'core / code') {return element; } return (<> {element} ); } wp.hooks.addFilter ('blocks.getSaveElement', 'wpse-298225', wpse298225GallerySaveElement);
Что я делаю не так?