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