Sanitize AROUND shortcode

时间:2017-07-18 作者:checklist

我有一个Wordpress plugin 它允许用户标记项目符号列表,然后在其周围添加一个短代码。不幸的是,当用户选择项目符号列表时,第一个UL没有被选择,因此他们最终会做出一个奇怪的选择。结束代码应为:

[checklist-box title="Hello"]
<ul>
    <li>xxxx</li>
    <li>yyyy</li>
    <li>zzz</li>
</ul>
[/checklist-box]
但结果却是:

<ul>
    <li>[checklist-box title="Hello"]
<ul>
    <li>xxxx</li>
    <li>yyyy</li>
    <li>zzz</li>
</ul>
[/checklist-box]</li>
</ul>
这看起来很可怕。

澄清:我需要[检查表框]短代码来包装整个列表,包括

这是将项目符号包装在TinyMCE中的代码:

onsubmit: function(e) {
      var selected_text = editor.selection.getContent();
      shortcode = \'[checklist-box title="\' + e.data.title + \'"]\' + selected_text + \'[/checklist-box]\';
      editor.execCommand(\'mceInsertContent\', 0, shortcode);
}

1 个回复
SO网友:dbeja

请尝试使用此选项:

editor.focus();
var selected_text = editor.selection.getContent();
shortcode = \'[checklist-box title="\' + e.data.title + \'"]\' + selected_text + \'[/checklist-box]\';
editor.selection.setContent(shortcode);
editor.setContent(editor.getContent());
基本上,我首先强制编辑器聚焦,然后使用setContent来更改内容。在我的测试中,编辑器上仍然有一些小故障,但源代码还可以,所以我只需复制所有内容,然后再次设置以刷新编辑器。

结束

相关推荐

尝试将动态内容调用为ShortCode属性

我正在尝试向现有(第三方)短代码添加动态属性。短代码在同一页上出现多次。当我这样做时(在functions.php中),我可以得到第一个正确输出的短代码,但其他的则不行。function testOne(){ return do_shortcode(\'[abc type=\"contact\" orderby=\"menu_order\" order=\"asc\" style=\"list-post\" logic=\"and\" abc_tax_student=\"student1\