К основному контенту

Отключение автоформатирования в wordpress

Автоформатирование кода визуальным редактором Wordpress нервирует многих вебмастеров. Пока разработчики Wordpress не встроили системную кнопочку - отключить автоформатирование.Веб мастерам приходится самостоятельно решать проблему навязчивого автоформатирования. Я столкнулся с этой проблемой при размещении кодов разметки schema.org которую Wordpress полностью уничтожал. Я не использовал плагины, а просто вставлял код в редакторе. Но после перехода в визуальный редактор - разметка просто пропадала.
В сети я нашел два доходчивых описания решения проблемы автоформатирования wordpress.
Привожу их в этой статье со ссылками на первоисточники:

Отключение автоформатирования в wordpress (1 вариант)

Решение от вебмастерицы
Устанавливаем визуальный редактор TinyMce (https://wordpress.org/plugins/tinymce-advanced/)
В файле вашей Wordpress темы в файл functions.php добавляем такой код:
function change_mce_options($initArray) {
$initArray['verify_html'] = false;
$initArray['cleanup_on_startup'] = false;
$initArray['cleanup'] = false;
$initArray['forced_root_block'] = false;
$initArray['validate_children'] = false;
$initArray['remove_redundant_brs'] = false;
$initArray['remove_linebreaks'] = false;
$initArray['force_p_newlines'] = false;
$initArray['force_br_newlines'] = false;
$initArray['fix_table_elements'] = false;
$initArray['entities'] = '160,nbsp,38,amp,60,lt,62,gt';
return $initArray;
}
add_filter('tiny_mce_before_init', 'change_mce_options');
После выполнения этих рекомендаций проблема автоформатирования больше не наблюдалась.

Отключение автоформатирования в wordpress (2 вариант)

Второй вариант решения этой проблемы не зависит от вашего визуального редактора и позволяет отключить автоформатирование для произвольного фрагмента текста при помощи специального шорткода.
В файле вашей Wordpress темы в файл functions.php добавляем такой код:
function my_formatter($content) {
$new_content = '';
$pattern_full = '{(\[raw\].*?\[/raw\])}is';
$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($pieces as $piece) {
if (preg_match($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
} else {
$new_content .= wptexturize(wpautop($piece));
}
}
return $new_content;
}
remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'my_formatter', 99);
После этого можно использовать в ваших статьях шоркод [raw] Текст [/raw]

Комментарии