在WordPress v4+中,当用户将内容粘贴到TinyMCE visual editor中时,我想删除所有隐藏的格式。
当用户插入Microsoft Word中的文本时,“粘贴为文本”按钮会起作用,但在其他应用程序(如OSX页面)中则不会起作用。
您可以使用以下内容过滤掉Word的所有格式(谢谢Till Kruss):
class PasteAsPlainText {
function __construct() {
add_action( \'admin_init\', array( $this, \'init\' ) );
}
function init() {
add_filter( \'tiny_mce_before_init\', array( $this, \'forcePasteAsPlainText\' ) );
add_filter( \'teeny_mce_before_init\', array( $this, \'forcePasteAsPlainText\' ) );
add_filter( \'teeny_mce_plugins\', array( $this, \'loadPasteInTeeny\' ) );
add_filter( \'mce_buttons_2\', array( $this, \'removePasteAsPlainTextButton\' ) );
}
function forcePasteAsPlainText( $mceInit ) {
global $tinymce_version;
if ( $tinymce_version[0] < 4 ) {
$mceInit[ \'paste_text_sticky\' ] = true;
$mceInit[ \'paste_text_sticky_default\' ] = true;
} else {
$mceInit[ \'paste_as_text\' ] = true;
}
return $mceInit;
}
function loadPasteInTeeny( $plugins ) {
return array_merge( $plugins, (array) \'paste\' );
}
function removePasteAsPlainTextButton( $buttons ) {
if( ( $key = array_search( \'pastetext\', $buttons ) ) !== false ) {
unset( $buttons[ $key ] );
}
return $buttons;
}
}
new PasteAsPlainText();
然后,您可以通过选择要显示的按钮来隐藏粘贴为文本按钮(以禁止用户取消对其的锁定):
function formatTinyMCE( $in ) {
$in[\'toolbar1\'] = \'bold,custom_em,blockquote,aligncenter,link,unlink,spellchecker,undo,removeformat\';
return $in;
}
add_filter( \'tiny_mce_before_init\', \'formatTinyMCE\' );
现在,我们已经把单词排除在外了(最后),我们如何完全剥离粘贴到TinyMCE中的所有隐藏格式?
UPDATE: 一种方法是找到一个init选项,如paste_word_valid_elements 并有一个空的有效标记列表。