Пустая строка между анонсом и полным текстом статьи
Замечали, что при открытии полного текста статьи по ссылке "Читать дальше.." у вас появляется лишняя пустая строчка между анонсом статьи и самой статьей? Выглядит это примерно так:
Этим недугом страдают далеко не все шаблоны, а только те, в которых для абзаца <p> прописан отступ снизу типа "padding: 0px 0px 10px 0px;". Спрашивается, откуда берется пустой абзац между анонсом и полным текстом статьи?
Дело в том, что 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'); |
Этим вы избавитесь от автоформатирования ваших записей и WordPress больше не будет заключать span в теги абзаца. Но такой вариант не подойдет вам, если вы уже окончательно привыкли к тому, что WordPress за вас расставляет теги абзацев.
В таком случае предлагаю другой вариант через редактирование файла движка. Откройте файл wp-includes\post-template.php и найдите строчку:
121 | $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]; |
Этим мы сразу задали абзац <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>"; |
на:
125 | $output .= ' <p><a href="'. get_permalink() . "\" class=\"more-link\">$more_link_text</a></p>"; |
Теги <p> можете убрать, я их здесь вставил только затем, чтобы не прописывать для ссылки more-link собственный css-стиль, пусть она наследует стиль ссылок, прописанных для всех ссылок в абзацах.
Понравился пост? Подпишись на обновления по RSS или Twitter !
#21,
Спасибо!