我有一个客户在WordPress上遇到了Visual Editor问题,但在我的生活中,我无法复制客户所拥有的问题。
一点背景......
当我的客户端尝试在Visual Editor中编辑文本内容并且编辑器剥离我放入的任何自定义代码,数据属性并完全删除iframe 时出现问题。
这是我到目前为止所做的事情:
这是我在客户端报告出现问题之前在过滤器中添加的内容:
$opts = '*[*]';
$initArray['valid_elements'] = $opts;
$initArray['extended_valid_elements'] = $opts;
我添加了额外的并修改了规则,这就是我现在所拥有的(在functions.php中):
$initArray['valid_elements'] = $opts. ',@[role|aria-hidden|aria-checked|aria-selected|aria-pressed|aria-label|aria-labelledby|aria-disabled|aria-grabbed|aria-controls|aria-describedby|aria-required|tabindex|class|style|data-tabs|data-tabs-content|data-equalizer|data-equalizer-watch|data-equalize-on|data-count|data-ratio|frameborder|allowFullScreen|allowfullscreen]';
$initArray['extended_valid_elements'] = 'iframe[title|class|type|width|height|src|frameborder|allowFullScreen|allowfullscreen|data-ratio]';
$initArray['valid_children'] = '+p[iframe],+div[iframe]';
$initArray['invalid_elements'] = '';
我将iframe添加为有效子项,并特别告诉TinyMCE没有无效元素。
......客户端仍然遇到同样的问题,我需要了解为什么会发生这种情况以及如何解决这个问题。
任何人都有类似的经历或者可能对这个问题有答案吗?
编辑:目前正在寻找无插件的解决方案。我想,使用插件没有任何问题,但是如果可以通过编写额外的代码来解决这个问题,那么我宁愿不使用它。
编辑2:目前似乎被删除的iframe是一个更紧迫的问题。从现在开始,我的客户掌握的属性似乎完好无损。
更新:找出问题所在。它与TinyMCE无关。我忽略了一件事,那就是该网站是一个多站点,而该管理员帐户实际上并没有“未过滤”。能力。这是我不知道的事情,现在我知道了。
答案 0 :(得分:0)
WordPress使用KSES功能清除在TinyMCE中编辑的所有内容。因此,即使您在TinyMCE设置中将某些标签列入白名单,在保存时,WordPress也会使用自己的KSES功能过滤内容,并删除不允许的标签。默认情况下,只有管理员可以在内容中使用IFRAME,对于其他用户,它将在保存时被删除。以下是关于操纵KSES允许在内容中使用的标签的文章:KSES Tricks。使用类似的方法,您可以将IFRAME添加到所有用户的允许标签列表中。