Возможно, вы заметили, что при публикации постов в wordpress некоторые символы сами заменяются на другие, добавляются специальные знаки абзацев, отступы, переносы строк.В WordPress есть функция автоматического форматирования текста в соответствии с правилами движка, которые зачастую не подаются логике и чаще всего мешают публиковать определенный постов (например, с исходным кодом, который в изобилии имеется в кодерских блогах). Как решить эту проблему мы и рассмотрим в этом посту.
Есть два способа побороть эту напасть, отключить автоформатирование полностью или частично только в определенном шоркоде. Для себя выбрал первый вариант для меня так проще держать все под контролем нежели надеяться на нелогичное форматирование движка. Для тех кто плохо разбирается в html или не хочет тратить свое время на это, то ему подойдет второй вариант, что бы не приходилось самостоятельно расставлять все теги в тексте своими руками.
1. ОТКЛЮЧЕНИЕ АВТОФОРМАТИРОВАНИЕ ПОЛНОСТЬЮ
А . Как отключить автоформатирование p и br
При публикации постов в WordPress по умолчанию форматируется введенный текст, заключая абзацы в тег [plain]p[/plain]. А так же вставляет перенос на новую строку [plain]
[/plain] в произвольных случаях, когда и как захочется wordpress.
Отключать можно добавив в файл functions.php темы строчку кода:
[crayon lang=”php”]
remove_filter( ‘the_content’, ‘wpautop’ ); // Отключаем автоформатирование в полном посте
remove_filter( ‘the_excerpt’, ‘wpautop’ ); // Отключаем автоформатирование в кратком(анонсе) посте
remove_filter(‘comment_text’, ‘wpautop’); // Отключаем автоформатирование в комментариях[/crayon]
если вам надо выключить автоформатирование только в определенных страницах, то в шаблоне нужной вам страницы, перед выводом контента поста:
[crayon lang=”php”]the_content();[/crayon]
необходимо добавить:
[crayon lang=”php”]remove_filter( ‘the_content’, ‘wpautop’ ); // Отключаем автоформатирование в полном посте[/crayon]
Б . Как отключить автоформатирование спецсимволов
В задачи функции форматирования текста входит изменить текст на более правильный, читаемый и визуально привлекательный.
Текст изменяется следующим образом:
[plain]”текст в кавычках” станет “текстом в лапках”
‘текст в кавычках’ станет ‘текстом в лапках’
— станет —
— станет –
… станет …
(c) станет ©
(r) станет ®
™ станет ™
” станет ”
“ станет “
president’s станет president’s
presidents’ станет presidents’
12′ станет 12′
12″ станет 12″
2×4 станет 2×4[/plain]
Иногда это может стать проблемой для блоггера. Для публикации обычных текстов такая опция вполне удобна, но любого, кто в собственном блоге обсуждает код, это серьезно раздражает: при вставке в текстовый редактор парные кавычки возвращают синтаксическую ошибку.
Если вам необходимо отключить данную функции, то выполните следующие действия.
Добавляем в файл functions.php следующие строки:
[crayon lang=”php”]
remove_filter(‘the_content’,’wptexturize’); // Отключаем автоформатирование в полном посте
remove_filter(‘the_excerpt’,’wptexturize’); // Отключаем автоформатирование в кратком(анонсе) посте
remove_filter(‘comment_text’, ‘wptexturize’); // Отключаем автоформатирование в комментариях[/crayon]
2. ОТКЛЮЧЕНИЕ АВТОФОРМАТИРОВАНИЕ ЧАСТИЧНО
А вот возможность отключать автоматическое форматирование для определенной части текста было бы полезным для многих.
Первым делом мы создаем функцию, достаточно вставить в файл functions.php представленный ниже код:
[crayon lang=”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);[/crayon]
После этого можно использовать в записях шоркод [plain][raw][/plain], с помощью которого можно выделять текст, на который не будет распространятся автоматическое форматирование:
[crayon lang=”html”][raw]Этот текст не будет автоматически отформатирован.[/raw][/crayon]
19 комментариев
Автоформат мешает только при использование редактора, если использовать html версию, то проблем нет и не будет.
ООО это вы глубоко ошибаетесь, я раньше так тоже думал пока не столкнулся с этим сам. Я давно сам из-за автоформата перешел в HTML редактор, были косяки и с ним, но как-то терпимо.А вот недавно был случай, между картиной и текстом мне вставлялось аж 9 абзацев (< p>< /p>) и не что не поделать. Это уже ни в какие ворота не полезло, что и побудила написать этот пост и отказаться полностью от автоформатирования.
В большинстве случаев автоформатирование наоборот помогает. Особенно, если не нужно как – то по хитрому оформлять статью. Но иногда и правда требуется отключать это автоформатирование.
Очень нужные советы описаны в этом посте.
Спасибо. Воспользовался удалением фильтра, а то вставлял тэги p вместо перевода строки. Я ведь пишу посты в блокноте и сам тэги ставлю, а он мне добавочно портит.
А как вы относитесь к плагину Raw HTML? У меня проблема – никак не могу встроить код кроссворда в блог. Уже все перепробовала, делала один в один, как подсказывали, но увы. И даже этот плагин не помог, хотя, говорят, что он должен вставлять чистый html-код.
Отличная статья! На самом деле WordPress меняет код страницы. Если редактировать в режиме HTML, а потом переключиться в визуальный режим, то вернувшись опять в режим HTML можно заметить что код стал другим (что-то потерялось, а что-то добавилось) Лично меня это бесит.
Давно думал с этим разобраться. Благодаря этой статье все решилось за 5 минут, а то и меньше!
Спасибо! Очень помогло, когда WP сам по себе добавил ненужное форматирование на рабочем сайте.
А мне не помогает 🙁
Ни один из способ не помог, WP при переключение между Визуально и Текст или перед записью все переделывает
Возможно вы что-то не так делаете, я этими способами пользуюсь не первый год.
Алексей, а вы так и не поняли, в чем тут проблема?
И я не могу найти у себя проблему. У меня Вордпресс не прописывает теги , и даже более того, убирает их, если вручную их прописать в html-режиме.
И не удалось найти ничего типа “remove_filter( ‘the_content’, ‘wpautop’ );” в файлах функций. Чешу репу(((
К сожалению не могу Вам помочь, не сталкивался с таким. Может какой-то плагин глючит, иногда они мешают стабильной работе wordpress/
И у вас до сих пор это работает? Я оба способа попробовала на двух разных сайтах, никаких изменений. В чем же может быть проблема?
Да у меня работает, но этот способ работает только в текстовом редакторе, если переключаться на визуальный редактор, то всё слетает. Пишите на форум я там быстрее отвечаю.
А как сделать, чтобы при переключении на визуальный редактор ничего не сбивалось, вы не знаете?
Нет, я больше не занимался этим вопросом.
Спасибо огромное!
Начинаю переделывать сайт, так как до этого совсем не использовал теги h1…h6. Никогда сайтами не занимался. поэтому год делал, как приходилось.
Реально запарился бороться с автоформатированием. И если с переносом после тега еще как-то можно справиться с помощью display: inline; то на поиск инфвы по устранению обрыва текста перед тегом я потратил три часа!!! все одно и тоже.
К счастью, добрался до вас 🙂 Теперь буду переделывать потиху все свои 100+ публикации.
Всего наилучшего.
Благодарю за ценный совет!
Помогло. А то совсем замучался с этими параграфами)))