从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的新手,所以我找不到解决这种标记的好方法。
您可以配置TinyMCE在TinyMCE配置中将<b>
转换为<strong>
,将<i>
转换为<em>
,因此您无需编写代码即可执行此操作。设置为:
extended_valid_elements : "strong/b,em/i"
这里是TinyMCE中的一个例子:http://fiddle.tinymce.com/pjhaab
WordPress有钩子供您在调用TinyMCE之前包含配置选项,因此您可以添加此选项,而不必尝试对内容进行预处理或后期处理。