WordPress:使用自定义古腾堡块嵌入代码
WordPress: Embed code with custom Gutenberg block
我正在尝试在我的 Gutenberg 块中包含自定义 HTML 嵌入输入,但不知道该怎么做。
我想知道在块中添加 HTML 的最佳方式与使用自定义 HTML 块的方式相同。有没有我遗漏的古腾堡元素?
我尝试了
的方法
attributes:{
embed: {
type: 'string',
default: null,
},
....
}
然后我在 edit()
上创建了一个 RichText
let { embed, ..... } = attributes;
<label>Embed HTML code here</label>
<RichText
tagName="div"
className="rich-text-holder"
placeholder= "Add the HTML"
value={ embed }
onChange={ ( embed ) => setAttributes( { embed } ) }
/>
最后再次保存 ()
let { embed, .... } = attributes;
function createMarkup() {
return {__html: { embed } };
}
return().....
{ embed &&
//<RawHTML className="listing-embed" >{ embed }</RawHTML>
<div dangerouslySetInnerHTML={ createMarkup() } />
}
....
我的第一个问题是属性被保存为 <iframe src="https://www.w3schools.com"></iframe>
例如。第二个问题是在前端我只看到一个空的 div.
第三个问题是,即使我设法使代码显示为文本,而不是前端的实际代码
你有什么更好的方法或者知道我的代码有什么问题吗?
您可以查看自定义 HTML 块是如何做到的 in the github repository for Gutenberg。
My first problem is that the attribute is saved as <iframe
src="https://www.w3schools.com"></iframe> for example.
这可能是因为您正在使用 RichText。您能否改用 TextareaControl 并且它可能不会转义内容?
The second problem is that on frontend I see just an empty div.
我想这是因为 HTML 无效
我正在尝试在我的 Gutenberg 块中包含自定义 HTML 嵌入输入,但不知道该怎么做。
我想知道在块中添加 HTML 的最佳方式与使用自定义 HTML 块的方式相同。有没有我遗漏的古腾堡元素?
我尝试了
的方法attributes:{
embed: {
type: 'string',
default: null,
},
....
}
然后我在 edit()
let { embed, ..... } = attributes;
<label>Embed HTML code here</label>
<RichText
tagName="div"
className="rich-text-holder"
placeholder= "Add the HTML"
value={ embed }
onChange={ ( embed ) => setAttributes( { embed } ) }
/>
最后再次保存 ()
let { embed, .... } = attributes;
function createMarkup() {
return {__html: { embed } };
}
return().....
{ embed &&
//<RawHTML className="listing-embed" >{ embed }</RawHTML>
<div dangerouslySetInnerHTML={ createMarkup() } />
}
....
我的第一个问题是属性被保存为 <iframe src="https://www.w3schools.com"></iframe>
例如。第二个问题是在前端我只看到一个空的 div.
第三个问题是,即使我设法使代码显示为文本,而不是前端的实际代码
你有什么更好的方法或者知道我的代码有什么问题吗?
您可以查看自定义 HTML 块是如何做到的 in the github repository for Gutenberg。
My first problem is that the attribute is saved as <iframe src="https://www.w3schools.com"></iframe> for example.
这可能是因为您正在使用 RichText。您能否改用 TextareaControl 并且它可能不会转义内容?
The second problem is that on frontend I see just an empty div.
我想这是因为 HTML 无效