Home News

Пустая строка между анонсом и полным текстом статьи

06.09.2018

видео Пустая строка между анонсом и полным текстом статьи

Василий Торпаев Аудиокнига Посмотри на небо

Замечали, что при открытии полного текста статьи по ссылке "Читать дальше.." у вас появляется лишняя пустая строчка между анонсом статьи и самой статьей? Выглядит это примерно так:


Теория сложности вычислений - Введение - пилотная версия

Этим недугом страдают далеко не все шаблоны, а только те, в которых для абзаца <p> прописан отступ снизу типа " padding: 0px 0px 10px 0px; ". Спрашивается, откуда берется пустой абзац между анонсом и полным текстом статьи?


SALING02

Дело в том, что WordPress автоматом заключает теги типа <span id="more-44"></span> (на этот id и ведет ссылка "Читать дальше..") в теги <p> . Корни такого поведения WordPress лежат в функции wpautop , которой обрабатываются все ваши записи в блоге. Она не дает вашему тексту быть вне абзаца. Скажем, если в визуальном редакторе вы написали пару строчек и даже на вкладке " Код " никаких <p> не видите, то при публикации записи эти ваши строчки все равно будут в тегах <p> . Лично мне такое поведение WordPress категорически не нравится, так как WordPress считает себя умнее блогера и якобы исправляет его ошибки в оформлении текста записи. Аналогично и со span , WordPress не дает ему быть вне абзаца и заключает его в тег <p> , а если, как я уже заметил, у вас для <p> прописан отступ, то и возникает эта лишняя пустая строчка. Рассматривать вариант с убиранием отступа у <p> я не буду, частенько он необходим для полноценного функционирования шаблона, поэтому рассмотрим другие варианты.

Первое, что вы можете сделать это удалить функцию wpautop . Для этого откройте файл functions.php вашего шаблона и добавьте туда строчку:

remove_filter ( 'the_content' , 'wpautop' ) ;

remove_filter('the_content', 'wpautop');

Этим вы избавитесь от автоформатирования ваших записей и WordPress больше не будет заключать span в теги абзаца. Но такой вариант не подойдет вам, если вы уже окончательно привыкли к тому, что WordPress за вас расставляет теги абзацев.

В таком случае предлагаю другой вариант через редактирование файла движка. Откройте файл wp-includes\post-template.php и найдите строчку:

121 $output .= '<span id="more-' . $id . '"></span>' . $content [ 1 ] ;

$output .= '<span id="more-'.$id.'"></span>'.$content[1];

и замените ее на:

121 $output .= '<p style="margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px;"><span id="more-' . $id . '"></span></p>' . $content [ 1 ] ;

$output .= '<p style="margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px;"><span id="more-'.$id.'"></span></p>'.$content[1];

Этим мы сразу задали абзац <p> для span , причем обнулили все отступы этого абзаца и теперь, несмотря на то, что у вас прописано в файле стилей шаблона этот абзац не будет давать отступ и как следствие мы не будем наблюдать визуально лишнюю пустую строку:

Здесь же можно избавится от ссылок на полный текст статьи в виде article.html#more-44 , то есть ссылка "Читать дальше.." будет вести просто на article.html вместо article.html#more-44 . Замените строчку:

125 $output .= ' <a href="' . get_permalink ( ) . "#more-$id \" class= \" more-link \" >$more_link_text</a>" ;

$output .= ' <a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>";

на:

125 $output .= ' <p><a href="' . get_permalink ( ) . " \" class= \" more-link \" >$more_link_text</a></p>" ;

$output .= ' <p><a href="'. get_permalink() . "\" class=\"more-link\">$more_link_text</a></p>";

Теги <p> можете убрать, я их здесь вставил только затем, чтобы не прописывать для ссылки more-link собственный css -стиль, пусть она наследует стиль ссылок, прописанных для всех ссылок в абзацах.

rss