форматирование текста вордпресом

публикую запись, есть там текст вроде этого:

<p>текст
<br />текст
<br />текст
<br />текст</p>

сохраняю, смотрю запись – в исходнике

<p>текст</p>
<p>текст</p>
<p>текст</p>
<p>текст</p>

опять открываю в запись в вордпрессе – там текст с <br /> (визуальный редактор в WP отключен)
пробовал отключить все плагины – не помогает.
с чего вдруг WP форматирует текст, набранный не визуальным редактором и при отключенной опции исправлять некорректный xhtml-код?

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

мля, даже отсутствие визуального редактора не помогает с глюками WP.
чтобы он не создавал левые абзацы, а использовал указанный <br /> нужно чтобы весь текст был в строчку. это в невизуальном редакторе-то! бред.

типа такого:

<p>текст <br />текст <br />текст <br />текст</p>

А попробуйте по-простому, без брыков, только переводы строки. Одиночный породит br, двойной – p.

я пишу то в Live Writer’е – там стоит форматирование XHTML. а для того, чтобы WP не портил этот текст я отключил визуальный редактор. впрочем ситуация даже хуже – даже без захода в редактор WP – просто опубликовав текст он все равно расставляет свои <p> и убирает <br>.
причем я не могу в Live Writer’е отрубить переносы строк после указанного <br /> – при xhtml он форматирует исходный текст в соответствии с нормами.
раньше вроде бы WP не занимался такой фигней как переформатирование текста. особенно без визуального редактора и особенно когда в редактор вообще не заходят.

PS угу, получилось в редакторе такое провернуть – перевод строки делает <br>, а двойной перевод <p>. прям как в визуальном редакторе (( как с этой напастью бороться я хз ((

попробовал на другом блоге, где после обновления до 2.5.1 я еще не писал записей – аналогичная фигня. у меня были шаблоны, по которым я писал посты – теперь работать с ними в Live Writer’е не могу и переформатировать тоже не могу – Live Writer все равно разметку похерит при переходе в HTML форматирование.

в чем теперь различие визуального и не визуального редактора в WP мне не ясно. написать код можно какой угодно не в визуальном редакторе – только WP все равно этот код пропустит через визуальный редактор и исправит то, что считает неправильным. кошмар ((

попробовал визуальный редактор – пишу:

текст [enter]

текст [enter]

текст [enter]

по идее каждое слово "текст" теперь должно быть абзацем <p> – переключаюсь в HTML – пусто.

отсюда вопрос – где отрубить фильтр или что-то там еще, через что WP пропускает тексты записей. не нужно мне, чтобы WP за меня решал как я оформляю тексты. отсутствие визуального редактора теперь не помогает как в 2.3.3

PS продолжение. захожу в эту сохраненную запись с визуальном редактором. вижу на 1 секунду код:
<p>текст</p>
<p>текст</p>
<p>текст</p>
через секунду визуальный редактор превращает этот код в то, что я набрал выше. переключаюсь в HTML – нету там теперь <p> вообще. аналогичный текст, что я вижу и в визуальном редакторе. ну не бред? HTML редактор, который не показывает HTML-разметку. и сам WP, который хранит код в одном формате – показывает его в блоге в другом формате, меняя его на лету.

я в полном растройстве, столько теперь гиммора будет с опубликованием простейших текстов (((

Вопрос в догонку. Как устроить отступ первой строки в абзаце, красную строку?

Вопрос в догонку. Как устроить отступ первой строки в абзаце, красную строку?

такое не в редакторе делается, а через css.

что-то типа

#content p{
text-indent: 20px;
}

попробовал визуальный редактор - пишу:

текст [enter]

текст [enter]

текст [enter]

по идее каждое слово "текст" теперь должно быть абзацем <p> - переключаюсь в HTML - пусто.

По идее <p> появится при выводе. В редакторе и в базе так и будут двойные переводы строк.

На странице:

<div class="entry">
<p>текст</p>
<p>текст</p>
<p>текст</p>
</div>

ну мне непонятно почему HTML редактор не показывает HTML. но да неважно – выяснил проблему. если в коде есть конструкция типа
<pre> </pre>, то весь код ниже него переформатируется. причем при всех выключенных плагинах (плагин, который и использует <pre> тоже отключен).
придется или отказаться от плагина или от конструкции <pre></pre> (у меня она для плагина WP_Syntax), это служебная конструкция или как? почему даже при выключенном плагине она рушит разметку html?

хм, это не тег WP, а HTML. почему даже после закрытия </pre> он ломает текст ниже себя не пойму, баг что ли какой-то с WP.

Посмотрите kses.php, может надо просто добавить pre в $allowedtags.

с kses.php не получилось – явно баг какой-то в WP. зато исправив в коде плагина конструкцию на <test> </test> все получилось, и код в <test> оформляется как мне надо и переформатирования ниже больше нет.

огромное спасибо еще раз Юрий, выручаете в самых непонятных ситуациях.

хотя замена на <test> испортила форматирование самого кода, заключенного в тегах <test>. видимо плагин wp_syntax только разукрашивал разметку кода, а форматированием занимался именно <pre>. ладно, поищу другой плагин.

Посмотреть, что ли, плагин?..

upd вставил кусок php в середину поста – всё нормально, ничего не испортилось, php покрасилось.

по умолчанию? с <pre lang="php"> ?

просто если опубликовать вот такой текст:

<p>текст 
  <br />текст2 

  <br />текст3 

  <br />текст4</p>

<pre lang="php">function wp_syntax_before_filter($content)
{
    return preg_replace_callback(
        &quot;/\s*<test  (?:LANG="[\&quot;']([\W-]*)[\&quot;']|LINE=[\&quot;'](\D*)[\&quot;']|\S)+">(.*)&lt;\/test&gt;\s*/siU&quot;,
        &quot;wp_syntax_substitute&quot;,
        $content
    );
}</pre>

<p>текст 
  <br />текст2 

  <br />текст3 

  <br />текст4</p>

то получим, что верхний текст в записи форматируется как надо – а текст после <pre> уже через строчку скачет. счас скриншот сделаю, а то чувствую плохо объясняю.

вот что я имею ввиду и что мне мешает жить. после использовать этого <pre> я должен лезть в админку WP, залезать в редактор кода и вручную убирать <br /> и расставлять переносы строк. что естественно меня не устраивает – я уж лучше плагин другой найду, не использующий конструкцию <pre>, а использующий например <code>

по умолчанию? с <pre lang="php"> ?

Ничего не трогал. Поставил плагин и отредактировал пост.

Смущенный человек, их взглядом умилен.

<pre lang="php">
function wp_syntax_code_trim($code)
{
    // special ltrim b/c leading whitespace matters on 1st line of content
    $code = preg_replace("/^\s*\n/siU", "", $code);
    $code = rtrim($code);
    return $code;
}
</pre>

Как эхо отзвуков в один аккорд неясный,
просто если опубликовать вот такой текст:

то у меня получается вот такой скрин

то у меня получается вот такой скрин
http://keep4u.ru/imgs/b/080621/48/48e8df32e08faa8df6.jpg

а как он вставлен? через визуальный редактор? через HTML-редактор?

Поклацал туда-сюда визуал-html – <br> и <p> пропали, остались только двойные LF, внешний вид не изменился. Нет, вру, немного уменьшилась дырка между текст и текст2, теперь все интервалы одинаковые.

а как он вставлен? через визуальный редактор? через HTML-редактор?

Разумеется, в HTML, там же теги.

ну вот приходится в html или в визуальном редакторе убирать переводы строки. формально – если бы вставлялся чистый xhtml-текст, то запись должна была бы выглядеть как у меня на скриншоте до <pre>, а не как после <pre>

проблемы в общем-то две: одна, что WP генерирует уже якобы сгенерированный HTML-код, заменяя одиночные переводы строки через <br>, а двойные <p>. не знаю больше ни одного редактора HTML, который творил бы такое безобразие – в школе учат, что в языке разметке HTML символы перевода строки ничего не значат и служат лишь для удобства верстальщика. лет десять назад я с трудом въезжал в эту концепцию, когда конструировал свой первый сайт – и теперь в обратную переучиваться сложно.

ну и вторая проблема, при публикации через Live Writer, когда html-текст WP не генерирует заново на основе переводов строк, а после <pre> начинает этим заниматься.

ни на одну из проблем я решения не знаю. но могу хотя бы отказаться от использования <pre> – <code> тоже сохраняет переводы строк, надо только найти плагин подсветки кода с использованием <code>
но в целом такая ситуация мне не нравится ((

А попробуйте такое "лекарство"
remove_filter(‘the_content’, ‘wpautop’);
remove_filter(‘the_content’, ‘wptexturize’);

А попробуйте такое "лекарство"
remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

сработало )) в сотый раз громаднейшее спасибо!

а что эти фильтры делают? autop понятно из названия, а wptexturize?

А черт его знает, я подсмотрел это в плагине inline-js.php 😆

[quote=Ю.Б.]А попробуйте такое "лекарство"
remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

сработало )) в сотый раз громаднейшее спасибо!

а что эти фильтры делают? autop понятно из названия, а wptexturize?[/quote]
Погодите, а куда это нужно вставить?

в functions.php вашей темы

в functions.php вашей темы

В моей теме нет такого файла. 😉

ну так создайте его со следующим содержимым:

<?php 

remove_filter('the_content', 'wpautop');
    
?>

а у меня так и не получилось по нормальному проблему решить, тем более в php я не силён, теперь я просто текст вставляю в поле HTML и где надо сделать новый абзац вставляю такую вот казябру 🙂

<p>&nbsp;</p>

Anonymous
Отправить
Ответ на: