Столкнулась с одной проблемой, где  Wordpress автоматически ставит теги <br> и  <p>, там где нет ни одного намека на то, что они должны там находится. Обнаружилась проблемма случайно и как и следовало ожидать в самом неподходящем месте. После установки плагина для отображения галереи, открылась неприятная ситуация с фильтром категорий. Все категории сьехали.  Причина была найдена очень быстро, а вот устранить её было не так просто. Обнаружилось что после каждого тега со ссылкой WordPress автоматиески выставлял теги <br>. После долгих поисков в сети было найдено много решений этой задачи, но не было подходящего для моего случая. Расскажу о всех по порядку..

 

Scr1Scrt2

 1.Отключить автоматическое замену перевода строки в теги

Можно отключить функцию wpautop(), которая отвечает за автоматическое преобразование переводов строки в визуальном редакторе в теги <p> и <br>. Но это приведет  к тому что все теги и переносы придется писать в ручную, для этого нужен навык и время, чтобы вставлять теги в нужные места, так этот вариант неприемлем.

И сделать это можно так

Закомментировать строку в в файле /wp-includes/default-filters.php

add_filter( 'the_content', 'wpautop');

Так же был вариант закоментировать еще и строки

add_filter( 'the_excerpt', 'wpautop'); // в анонсах
add_filter( 'comment_text', 'wpautop',30 ); // в комментариях.

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

В файл functions.php активного шаблона нужно вставить следующий код:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

У меня это решение не заработало.

2. Редактирования файла functions.php

Второе решение подобно первому, только что редактировать нужно файл functions.php, который находится внутри активной темы. В конец файла нужно  добавить  строки:

remove_filter( 'the_content', 'wpautop' );// для контента
remove_filter( 'the_excerpt', 'wpautop' );// для анонсов
remove_filter( 'comment_text', 'wpautop' );// для комментарий

Плюс этого решения: после обновления WordPress не нужно ничего заново добавлять.

В моем случае это решение тоже не принесло никаких результатов.

3. Плагин TinyMCE Advanced

Так же речь шла о плагине HTML редакторе. Где , в настройках плагина можно поставить флажок на запрет тегов <br> и <p>.

Интересное решение, но слишком много минусов, таких как много лишенего кода и лишняя нагрузка соответственно.

Даже не стала пробовать.

4.  Редактирование стилей

Все эти решения  не помогли избавиться от тегов <br> и <p> в моем случае лишь один последний вариант который мне удалось найти помог мне приблииться к решению этой задачи. На мой взгляд — это самое лучшее решение, простое и ничего лишнего. Тем более все вышеуказанные методы отключают теги везде где указано.

Нужно создать блок div с каким-нибудь классом, к примеру:

<div class="nobr"></div>

В файле style.css задать этому классу стили.

.nobr br {
display: none !important;
padding: 0px !important;
margin: 0px !important;
line-height: 0px !important;
border: 0px !important;
}

При вставке кода в статью,  его нужно обернуть в div с этим классом. Все исправилось!

 

Scr3png

 

Добавить комментарий