Пытаясь использовать (и понимать) Гутенберга для создания пользовательских блоков для моей темы WordPress, я столкнулся с проблемой, с которой не мог разобраться должным образом.
Я создал пользовательский блок, содержащий только RichText
элемент, значение которого я пытался вывести как тег <label>
. Проблема: <label>
обернут внутри <p>
тегов.
Копаясь в нем, я обнаружил, что это связано с фильтром wpautop
и что существует обходной путь . Но я также читал, что удаление этого фильтра не было хорошей идеей, и, поскольку он кажется ошибкой, а не предполагаемым поведением, мне не нравится идея обходного пути, которое может испортить ситуацию в будущем.
Итак, мой вопрос состоит из двух частей: Безопасно ли удалять wpautop
, чтобы избежать нежелательных тегов <p>
? и Есть ли что-то еще, что я мог бы сделать (возможно, в моем блоке edit
и save
функций), чтобы исправить это?
Вот соответствующие фрагменты кода (я не использую JSX):
атрибуты:
title: {
type: 'string',
default: '',
}
функция edit ():
return [
wp.element.createElement(wp.blockEditor.RichText, {
tagName: 'p',
className: props.className,
placeholder: props.attributes.placeholder,
keepPlaceholderOnFocus: true,
value: props.attributes.title,
onChange: value => props.setAttributes({
title: value
})
})
]
функция save ():
return wp.element.createElement(wp.blockEditor.RichText.Content, {
tagName: 'label',
value: props.attributes.title
});
Который должен вывести <label>MyTitle</label>
, и вместо этого я получу <p><label>Message</label></p>