如何在插入后期间允许src标记中的data:Image属性?

时间:2019-11-28 作者:Mustafa Demir

我正在使用插入帖子wp_post_insert(). 我的帖子内容如下:

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAN4AAAB6CA { ... }
但在插入过程中,Wordpressremoves 数据属性。因此,上述代码变为:

 <img src="image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAN4AAAB6CA { ... }
我试过这样的方法,但没有成功:

function my_filter_allowed_html($allowed, $context){
if (is_array($context)) {
    return $allowed;
}

if ($context === \'post\') {
    $allowed[\'img\'][\'data\'] = true;
    $allowed[\'src\'][\'data\'] = true;

}

return $allowed;
}
add_filter(\'wp_kses_allowed_html\', \'my_filter_allowed_html\', 10, 2);
我如何避免这种情况?

1 个回复
SO网友:Mustafa Demir

幸亏naththedeveloper 来自StackOverflow。他的answer 为我工作。

嗯,这是一个噩梦,但我想我在挖掘了WordPress代码后解决了它,该代码通过wp_insert_post. 请将此添加到functions.php 归档并检查其工作情况:

add_filter(\'kses_allowed_protocols\', function ($protocols) {
    $protocols[] = \'data\';

    return $protocols;
});
本质上,WordPress内部有一个过滤器,它可以检查内容中任何URL的协议,并删除任何它不喜欢的URL。默认情况下,支持的列表不支持数据协议。上述函数只是将其添加到支持的协议列表中。

如果您是管理员,则不会运行此筛选器,这可能是您只有在注销时才会看到此问题的原因。

感谢您的研究。

相关推荐