多个TinyMCE实例正在删除<p>标记

时间:2014-05-25 作者:user28216

我在函数中使用以下代码。php在编辑器内的自定义字段textareas上添加一个TinyMCE框:

add_action(\'admin_print_footer_scripts\',\'FT_TinymceCustom\',99);
function FT_TinymceCustom()
{
?>
<script type="text/javascript">
    jQuery(function($)
    {
        var i=1;
        $(\'.customEditor textarea\').each(function(e)
        {
            var id = $(this).attr(\'id\');

            if (!id)
            {
                id = \'customEditor-\' + i++;
                $(this).attr(\'id\',id);
            }

            tinyMCE.execCommand(\'mceAddEditor\', false, id);
        });
    });
</script>
<?php
}

然而,在我添加此内容的任何框中,似乎都会导致删除段落标记的错误。

因此,如果我在自定义TinyMCE文本区域(源代码视图)中输入此内容:

<p>test</p>p>test</p>
保存后,框中会显示以下内容:

p>test test</p>
这只发生在最新的3.9更新之后,这迫使我修改上面的JS代码以使其正常工作。

2 个回复
SO网友:helgatheviking

既然这个SO链接指向我的问题,我将在这里重新发布并进行扩展。

TinyMCE不在编辑器中保存“p”标记,而是通过WordPress函数(例如wpautop(). 因此,解决方案是将我的文本框更改为:

<textarea class="wysiwyg" rows="10" cols="50" name="some_textarea" rows="3"><?php echo wp_richedit_pre($value); ?></textarea>
然后在前端重新应用添加到的所有默认过滤器the_content.

// in functions.php
add_filter( \'meta_content\', \'wptexturize\'        );
add_filter( \'meta_content\', \'convert_smilies\'    );
add_filter( \'meta_content\', \'convert_chars\'      );
add_filter( \'meta_content\', \'wpautop\'            );
add_filter( \'meta_content\', \'shortcode_unautop\'  );
add_filter( \'meta_content\', \'prepend_attachment\' );
add_filter( \'meta_content\', \'do_shortcode\');
然后在需要打印信息的位置:

echo apply_filters( \'meta_content\', $data );
你可以直接应用内容过滤器,但我发现很多插件也会向其中添加内容,最后我发现到处都有社交共享按钮,所以想出了这个解决方案。

您可以查看我的githubrepeatable, sortable, tinyMCE-enabled text editors (使用WP Alchemy,但我认为JS可以在没有WPA的情况下使用)

SO网友:user28216

在此处找到答案:https://stackoverflow.com/questions/5956174/tinymce-editors-in-meta-boxes-not-saving-p-tag

必须对tinymce的输出运行wpautop()。

结束

相关推荐

TinyMCE在粘贴时剥离内容。可能是个漏洞

我有一个短代码,它对我正在创建的主题具有“style”属性,如下所示:[shortcode_name type=\"normal\" style=\"fixed\"] 现在,如果我将其粘贴到TinyMCE编辑器中,我会得到:[shortcode_name type=\"normal\"] 所以它剥离了整个style属性,只有当我有style属性的值时,它才会这样做,所以如果我粘贴这个,它工作得很好:[shortcode_name type=\"normal\" style=\"\"]&