Я создал блок Гутенберга в своей функции редактирования, в которой используется компонент <RichText />
, показанный в приведенном ниже коде (с attributes
):
attributes: {
firstBlockTitleText: {
type: 'string',
source: 'attribute',
attribute: 'h2'
},
secondBlockTitleText: {
type: 'string',
source: 'attribute',
attribute: 'p'
}
},
edit: ({setAttributes, attributes}) => {
const onChangeFirstBlockTitle = newTitle => {
setAttributes({firstBlockTitleText: newTitle})
}
const onChangeSecondBlockText = newText => {
setAttributes({secondBlockTitleText: newText})
}
return (
<>
<div>
<div>
<h2><RichText value={attributes.firstBlockTitleText} placeholder={'Enter Text'} onChange={onChangeFirstBlockTitle} /></h2>
</div>
//Rest of code
</>
Работает нормально для элементов с одной подкладкой, что означаетПока я не ввожу многострочный заголовок, текст на передней части, как и ожидалось.
Однако, скажем, я пытаюсь добавить многострочный текст в область, он появляется с тегами <br>
в тексте, как показано ниже:
Lorem Ipsum<br> is placeholder text<br> used for<br>
testing text<br> in content blocks<br> such as this.
Примечание: это выглядит так, только когда я сохраняю блок и отображаю его на передней панели, а не на экране редактора.
Очевидно, что эти теги <br>
предназначены для разрывов строк, которые происходят в тексте, который был введен, и он отображается во внешнем интерфейсе WordPress, потому что перед экранированием HTML-кода перед вводом в базу данных WordPress выполняется экранирование. Но почему появляется этот конкретный тег, а не, скажем, теги <h2>
снаружи?
Кроме того, я хотел бы знать, как избавиться от него, не выполняя JS str.replace()
если возможно. Спасибо!