Возможно, вы заметили, что при публикации постов в wordpress некоторые символы сами заменяются на другие, добавляются специальные знаки абзацев, отступы, переносы строк.В WordPress есть функция автоматического форматирования текста в соответствии с правилами движка, которые зачастую не подаются логике и чаще всего мешают публиковать определенный постов (например, с исходным кодом, который в изобилии имеется в кодерских блогах). Как решить эту проблему мы и рассмотрим в этом посту.
Есть два способа побороть эту напасть, отключить автоформатирование полностью или частично только в определенном шоркоде. Для себя выбрал первый вариант для меня так проще держать все под контролем нежели надеяться на нелогичное форматирование движка. Для тех кто плохо разбирается в html или не хочет тратить свое время на это, то ему подойдет второй вариант, что бы не приходилось самостоятельно расставлять все теги в тексте своими руками.
1. Полное отключение автоформатирования
А . Как отключить автоформатирование p и br
При публикации постов в WordPress по умолчанию форматируется введенный текст, заключая абзацы в тег <p>
. А так же вставляет перенос на новую строку </br>
в произвольных случаях, когда и как захочется wordpress.
Отключать можно добавив в файл functions.php темы строчку кода:
remove_filter( 'the_content', 'wpautop' ); // Отключаем автоформатирование в полном посте remove_filter( 'the_excerpt', 'wpautop' ); // Отключаем автоформатирование в кратком(анонсе) посте remove_filter('comment_text', 'wpautop'); // Отключаем автоформатирование в комментариях
если вам надо выключить автоформатирование только в определенных страницах, то в шаблоне нужной вам страницы, перед выводом контента поста:
the_content();
необходимо добавить:
remove_filter( 'the_content', 'wpautop' ); // Отключаем автоформатирование в полном посте
Б . Как отключить автоформатирование спецсимволов
В задачи функции форматирования текста входит изменить текст на более правильный, читаемый и визуально привлекательный.
Текст изменяется следующим образом:
"текст в кавычках" станет “текстом в лапках” 'текст в кавычках' станет ‘текстом в лапках’ --- станет — -- станет – ... станет … (c) станет © (r) станет ® (tm) станет ™ '' станет ” станет “ president's станет president’s presidents' станет presidents’ 12' станет 12′ 12" станет 12″ 2x4 станет 2×4
Иногда это может стать проблемой для блоггера. Для публикации обычных текстов такая опция вполне удобна, но любого, кто в собственном блоге обсуждает код, это серьезно раздражает: при вставке в текстовый редактор парные кавычки возвращают синтаксическую ошибку.
Если вам необходимо отключить данную функции, то выполните следующие действия.
Добавляем в файл functions.php следующие строки:
remove_filter('the_content','wptexturize'); // Отключаем автоформатирование в полном посте remove_filter('the_excerpt','wptexturize'); // Отключаем автоформатирование в кратком(анонсе) посте remove_filter('comment_text', 'wptexturize'); // Отключаем автоформатирование в комментариях
2. Частичное отключение автоформатирования
А вот возможность отключать автоматическое форматирование для определенной части текста было бы полезным для многих.
Первым делом мы создаем функцию, достаточно вставить в файл functions.php представленный ниже код:
ction 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]Этот текст не будет автоматически отформатирован.[/raw]