Wordpress редактор - Отключаем автоформатирование в wordpress
Заметки по Wordpress

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

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

Возможно, вы заметили, что при публикации постов в 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]

Данный тег легко вставить в html редактор, что бы он всегда был под рукой. Как это сделать показано в этом видеуроке Шорткоды wordpress – добавление в HTML редактор

Новые посты

WordPress редактор – добавление кнопок

Гордеев Игорь

Замена логотипа wordpress

Гордеев Игорь

Как отключить админ-панель в WordPress для всех кроме администраторов

Гордеев Игорь

19 комментариев

Скептик 11.03.2012 / 15:55

Автоформат мешает только при использование редактора, если использовать html версию, то проблем нет и не будет.

Ответить
Гордеев Игорь 11.03.2012 / 16:08

ООО это вы глубоко ошибаетесь, я раньше так тоже думал пока не столкнулся с этим сам. Я давно сам из-за автоформата перешел в HTML редактор, были косяки и с ним, но как-то терпимо.А вот недавно был случай, между картиной и текстом мне вставлялось аж 9 абзацев (< p>< /p>) и не что не поделать. Это уже ни в какие ворота не полезло, что и побудила написать этот пост и отказаться полностью от автоформатирования.

Ответить
rom4ikh 18.03.2012 / 00:10

В большинстве случаев автоформатирование наоборот помогает. Особенно, если не нужно как – то по хитрому оформлять статью. Но иногда и правда требуется отключать это автоформатирование.

Ответить
Простой 25.04.2012 / 21:45

Очень нужные советы описаны в этом посте.

Ответить
Akkad 12.09.2012 / 20:32

Спасибо. Воспользовался удалением фильтра, а то вставлял тэги p вместо перевода строки. Я ведь пишу посты в блокноте и сам тэги ставлю, а он мне добавочно портит.

Ответить
Елена Олейникова 21.10.2012 / 11:55

А как вы относитесь к плагину Raw HTML? У меня проблема – никак не могу встроить код кроссворда в блог. Уже все перепробовала, делала один в один, как подсказывали, но увы. И даже этот плагин не помог, хотя, говорят, что он должен вставлять чистый html-код.

Ответить
Алексей 23.08.2013 / 12:28

Отличная статья! На самом деле WordPress меняет код страницы. Если редактировать в режиме HTML, а потом переключиться в визуальный режим, то вернувшись опять в режим HTML можно заметить что код стал другим (что-то потерялось, а что-то добавилось) Лично меня это бесит.
Давно думал с этим разобраться. Благодаря этой статье все решилось за 5 минут, а то и меньше!

Ответить
buddha 30.12.2013 / 16:19

Спасибо! Очень помогло, когда WP сам по себе добавил ненужное форматирование на рабочем сайте.

Ответить
Алексей 13.02.2014 / 15:32

А мне не помогает 🙁
Ни один из способ не помог, WP при переключение между Визуально и Текст или перед записью все переделывает

Ответить
Гордеев Игорь 16.02.2014 / 11:02

Возможно вы что-то не так делаете, я этими способами пользуюсь не первый год.

Ответить
Анна 02.04.2015 / 20:48

Алексей, а вы так и не поняли, в чем тут проблема?

Ответить
an_b 12.05.2014 / 23:08

И я не могу найти у себя проблему. У меня Вордпресс не прописывает теги , и даже более того, убирает их, если вручную их прописать в html-режиме.

И не удалось найти ничего типа “remove_filter( ‘the_content’, ‘wpautop’ );” в файлах функций. Чешу репу(((

Ответить
Гордеев Игорь 22.05.2014 / 22:45

К сожалению не могу Вам помочь, не сталкивался с таким. Может какой-то плагин глючит, иногда они мешают стабильной работе wordpress/

Ответить
Анна 02.04.2015 / 01:11

И у вас до сих пор это работает? Я оба способа попробовала на двух разных сайтах, никаких изменений. В чем же может быть проблема?

Ответить
Гордеев Игорь 17.04.2015 / 16:03

Да у меня работает, но этот способ работает только в текстовом редакторе, если переключаться на визуальный редактор, то всё слетает. Пишите на форум я там быстрее отвечаю.

Ответить
Анна 20.04.2015 / 14:36

А как сделать, чтобы при переключении на визуальный редактор ничего не сбивалось, вы не знаете?

Ответить
Гордеев Игорь 20.04.2015 / 15:06

Нет, я больше не занимался этим вопросом.

Ответить
Виктор 09.12.2015 / 16:54

Спасибо огромное!
Начинаю переделывать сайт, так как до этого совсем не использовал теги h1…h6. Никогда сайтами не занимался. поэтому год делал, как приходилось.
Реально запарился бороться с автоформатированием. И если с переносом после тега еще как-то можно справиться с помощью display: inline; то на поиск инфвы по устранению обрыва текста перед тегом я потратил три часа!!! все одно и тоже.
К счастью, добрался до вас 🙂 Теперь буду переделывать потиху все свои 100+ публикации.
Всего наилучшего.

Ответить
Денис Зотов 09.03.2016 / 05:14

Благодарю за ценный совет!

Помогло. А то совсем замучался с этими параграфами)))

Ответить

Оставить комментарий