Я сделал блок Гутенберга для своего плагина, но он больше не работает, как ожидалось.Это работало с первой версией Гутенберга, и я не понимаю, что изменилось с тех пор.
Я прочитал несколько похожих вопросов, но не получил полезных ответов: - Блок Wordpress Гутенберга - Ошибка проверки блока Гутенберга - Ошибка проверки блока Гутенберга (дети не ожидаются)
Моя проблема в деталях:
Когда я добавляю блок в свой контент, он выглядитотлично, также, если я сохраняю сообщение, я вижу виджет, как и ожидалось.
Проблема в том, что когда я редактирую существующую статью, блок разрушается: https://ibb.co/6vHRcXC
Код выглядит хорошо,Я вижу это в редакторе кода: https://ibb.co/tDMGnPY
Обновляя статью, виджет все еще работает на веб-интерфейсе.
Консоль показывает это предупреждение, сопровождаемое несколькими ошибками: https://ibb.co/Gk80skq
Похоже, что идентификатор атрибута отсутствует в сгенерированном коде , но я не понимаю, почему.
Я попытался изменить имя этого атрибута ( в случае [data-ид] было зарезервированным словом ), но ничего не изменилось.
Я попытался изменить значение этого атрибута ( Мне нужно, чтобы оно было целым числом, но я попытался добавить префиксы в верхнем и нижнем регистре и подчеркивания ), и ничего не изменилось.
Немного контекста: Мне нужен уникальный идентификатор для каждого блока, созданного с помощью Gutenberg , нет места для повторов в ширину , и мне нужно перенести этот идентификатор в функцию JavaScript на внешнем интерфейсе..Пожалуйста, скажите мне, что я делаю неправильно, и если есть другой способ сделать это.
Это полный исходный код JavaScript моего блока Гутенберга:
(function () {
let iconSvg = wp.element.createElement('svg', {width: 20, height: 20},
wp.element.createElement('path', {d: "M10,0C4.478,0,0,4.478,0,10c0,5.521,4.478,10,10,10c5.521,0,10-4.479,10-10C20,4.478,15.521,0,10,0zM5.039,9.226c-0.786,0-1.425,0.765-1.425,1.705H2.576c0-1.512,1.104-2.742,2.462-2.742s2.463,1.23,2.463,2.742H6.463C6.463,9.991,5.825,9.226,5.039,9.226z M10,18.049c-3.417,0-6.188-2.41-6.188-5.382h12.375C16.188,15.639,13.418,18.049,10,18.049zM16.387,10.931c0-0.94-0.639-1.705-1.426-1.705c-0.785,0-1.424,0.765-1.424,1.705h-1.039c0-1.512,1.105-2.742,2.463-2.742s2.463,1.23,2.463,2.742H16.387z"})
);
wp.blocks.registerBlockType('plugin-name/gutenberg-block', {
title: 'CustomBlockName',
icon: iconSvg,
category: 'widgets',
edit: (props) => {
// @TODO: we need a unique ID for each block!
this.myId = props.attributes.itemId || Math.floor(Math.random() * 8388607); /// Medium int max value is 8388607;
props.setAttributes(
{
itemId: myId
}
);
return wp.element.createElement(
'div',
{},
[
wp.element.createElement(
'div',
{},
[
wp.element.createElement(
'img',
{
src: PluginNameGutenbergBlock.preview_image
}
)
]
)
]
);
},
save: (props) => {
let dataId = props.attributes.itemId;
return wp.element.createElement(
'div',
{},
[
wp.element.createElement(
'div',
{
class: 'plugin-name-outer'
},
[
wp.element.createElement(
'div',
{
'class': 'plugin-name-container-async gutenberg-block',
'data-id': dataId,
'data-type': PluginNameGutenbergBlock.item_type
},
wp.element.createElement(
'div',
{
'class': 'plugin-name-' + PluginNameGutenbergBlock.use_template
}, {},
[
wp.element.createElement(
'img',
{
src: PluginNameGutenbergBlock.loader_url
}
)
]
)
)
]
)
]
);
}
});
}());