从Word复制到Wordpress TinyMCE时替换HTML标签

问题描述 投票:0回答:1

从Word / LibreOffice复制到Wordpress TinyMCE编辑器时,我正在尽力清除HTML代码。我正在使用此代码(在functions.php中),略微从here改编而成:

add_filter('tiny_mce_before_init','configure_tinymce');

/**
 * Customize TinyMCE's configuration
 *
 * @param   array
 * @return  array
 */
function configure_tinymce($in) {
  $in['paste_preprocess'] = "function(plugin, args){
    // Strip all HTML tags except those we have whitelisted
    var whitelist = 'p,strong,em,i,b,h2,h3,h4,h5,h6,ul,li,ol';
    var stripped = jQuery('<div>' + args.content + '</div>');
    var els = stripped.find('*').not(whitelist);
    for (var i = els.length - 1; i >= 0; i--) {
      var e = els[i];
      jQuery(e).replaceWith(e.innerHTML);
    }
    // Strip all class and id attributes
    stripped.find('*').removeAttr('id').removeAttr('class').removeAttr('align');
    // Return the clean HTML
    args.content = stripped.html();
  }";
  return $in;
}

[效果很好,但是我也希望此功能将<b></b><i></i>标签替换为<strong></strong><em></em>标签。我尝试过使用str.replace,但是由于我是Java的新手,所以我找不到解决这种标记的好方法。

javascript wordpress tinymce
1个回答
0
投票

您可以配置TinyMCE在TinyMCE配置中将<b>转换为<strong>,将<i>转换为<em>,因此您无需编写代码即可执行此操作。设置为:

extended_valid_elements : "strong/b,em/i"

这里是TinyMCE中的一个例子:http://fiddle.tinymce.com/pjhaab

WordPress有钩子供您在调用TinyMCE之前包含配置选项,因此您可以添加此选项,而不必尝试对内容进行预处理或后期处理。

© www.soinside.com 2019 - 2024. All rights reserved.