如何将iframe标签保存到帖子中?

时间:2019-12-04 作者:simo

我注意到,当我在帖子中嵌入iframe然后保存更新时,iframe不会被保存。这似乎是一个安全特性,但我如何嵌入iframe呢?并将其设置为仅接受特定域的url源?

有什么想法吗?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

如果出于安全原因,框架被剥离,您不应该试图将嵌入代码直接放入帖子内容中,还有其他方法,例如oembed或Shortcode。

如果你有unfiltered_html 功能,您可以通过经典编辑器添加它们,但此功能非常危险。这也意味着任何不具备此功能的用户都将删除iFrame,就像任何自动化流程一样。

那么我如何在我的网站中嵌入东西呢

有几个选项

OEmbed

如果你获取Youtube视频的URL,并将其复制粘贴到编辑器中自己的行中,它会神奇地自动变成iframe嵌入。这是在工作中嵌入的。

您可以将OEmbed与许多服务一起使用,并且有用于添加您自己的服务器的API。一些第三方充当中间人,为许多通常不支持OEmbed的地方添加支持,例如iframely

短代码

您可以在代码中添加短代码,以便将内容嵌入到帖子内容中。这就是插件如何将表单和其他复杂的标记放置在帖子的中间。

你甚至可以建立一个[iframe] 短代码

内容安全策略和iFrame

请注意,由于iFrame的内容安全策略,有些东西无法放入iFrame中,这不是WP限制,而是iFrame和浏览器工作的基础。

SO网友:WebElaine

如果您使用的是经典编辑器,则可能是以没有unfiltered_html 能力。在常规站点上,管理员具有此功能;在多站点上,只有超级管理员才能这样做。

一个选择是给自己能力。例如,如果您是一名编辑:

<?php
/* Plugin Name: Allow Iframes */
// Update "editor" role when this plugin is updated
register_activation_hook( __FILE__, \'wpse_add_unfiltered_html\' );
function wpse_add_unfiltered_html() {
    // Get whichever role you want to affect
    $role = get_role(\'editor\');
    // Give editors "unfiltered_html" capability
    $role->add_cap(\'unfiltered_html\');
}
?>
另一种选择是使用块编辑器,这取决于要嵌入的iFrame类型。它允许您嵌入许多iFrame,如YouTube视频,而无需任何额外代码,这将适用于任何角色的用户。

相关推荐

过滤器嵌入标记以修改IFRAME属性

默认情况下,当在帖子/页面中放置另一个WP url时,它会将其嵌入,并生成一个blockquote和iframe代码,前端默认为:<iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" ....></iframe> 它还会在JS控制台中产生错误XMLHttpRequest cannot load http://example.com/wp-content