Добавьте следующий код в ваш файл functions.php
Примечание: Этот фильтр работает во время сохранения / обновления поста.
add_filter( 'wp_insert_post_data' , 'filter_post_data' , '99', 2 ); function filter_post_data( $data , $postarr ) { $content = $data['post_content']; $content = preg_replace('#<p.*?>(.*?)</p>#i', '<p>\1</p>', $content); $content = preg_replace('#<span.*?>(.*?)</span>#i', '<span>\1</span>', $content); $content = preg_replace('#<ol.*?>(.*?)</ol>#i', '<ol>\1</ol>', $content); $content = preg_replace('#<ul.*?>(.*?)</ul>#i', '<ul>\1</ul>', $content); $content = preg_replace('#<li.*?>(.*?)</li>#i', '<li>\1</li>', $content); $data['post_content'] = $content; return $data; }
Примечание: Этот фильтр работает в то время, когда функция the_content () выполняется.
add_filter( 'the_content', 'the_content_filter', 20 ); function the_content_filter( $content ) { $content = preg_replace('#<p.*?>(.*?)</p>#i', '<p>\1</p>', $content); $content = preg_replace('#<span.*?>(.*?)</span>#i', '<span>\1</span>', $content); $content = preg_replace('#<ol.*?>(.*?)</ol>#i', '<ol>\1</ol>', $content); $content = preg_replace('#<ul.*?>(.*?)</ul>#i', '<ul>\1</ul>', $content); $content = preg_replace('#<li.*?>(.*?)</li>#i', '<li>\1</li>', $content); return $content; }
Автоматически очистить Microsoft Word HTML
Поместите этот код в файл functions.php вашей темы. Все, что вы вставить в TinyMCE автоматически будет проходить через встроенную в Microsoft фильтрацию слово HTML.
/** * Safe Pasting for TinyMCE (automatically clean up MS Word HTML) */ function tinymce_paste_options($init) { $init['paste_auto_cleanup_on_paste'] = true; $init['paste_convert_headers_to_strong'] = true; return $init; } if( is_admin() ) add_filter('tiny_mce_before_init', 'tinymce_paste_options');
и еще такой фильтр:
function get_rid_of_mso_junk( $content ){ return preg_replace( '@(mso|panose)[^:]{1,25}:[^;]+;(\s+)?(\n+)?@i', '', $content ); } add_filter( 'content_save_pre', 'get_rid_of_mso_junk' );
и еще один фильтр:
function delete_between($beginning, $end, $string) { $beginningPos = strpos($string, $beginning); $endPos = strpos($string, $end); if (!$beginningPos || !$endPos) { return $string; } $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos); return str_replace($textToDelete, '', $string); } function clean_content( $content ){ if( is_home() || is_single()){ $content = delete_between('<!--[if gte mso', ';}', $content); return $content; }else{ return $content; } add_filter( 'the_content', 'clean_content' ); add_filter( 'the_excerpt', 'clean_content' );