我正在使用插入帖子wp_post_insert()
. 我的帖子内容如下:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAN4AAAB6CA { ... }
但在插入过程中,Wordpress
removes
数据属性。因此,上述代码变为:
<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);
我如何避免这种情况?
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。默认情况下,支持的列表不支持数据协议。上述函数只是将其添加到支持的协议列表中。
如果您是管理员,则不会运行此筛选器,这可能是您只有在注销时才会看到此问题的原因。
感谢您的研究。