Вопрос или проблема
Редактор wp заменял тег br на тег p. Не все решения здесь работали. Это вызывало проблемы с дизайном. Поэтому я отключил wpautop с помощью кода ниже….
remove_filter( 'the_content', 'wpautop' );
Забыл упомянуть, что аннотация исчезает, если используется….
remove_filter( 'the_excerpt', 'wpautop' );
Тем не менее, проблема все еще сохраняется для аннотации. В аннотации добавление одного br работает, но два br становятся p
Чтобы стилизовать p аннотации, я использую фильтр ниже…
add_filter( "the_excerpt", "add_class_to_excerpt" );
function add_class_to_excerpt( $excerpt ) {
return str_replace('<p', '<p class="short-desc" style="text-align: justify;"', $excerpt);
}
В настоящее время вывод выглядит следующим образом….
<p class="short-desc" style="text-align: justify;">text here</p>
<p class="short-desc" style="text-align: justify;">text here</p>
И я хочу, чтобы вывод выглядел так….
<p class="short-desc" style="text-align: justify;">text here<br><br/>
text here</p>
Как заставить wp аннотацию использовать тег br? или как остановить wp от превращения двух br в тег p?
Почему бы не использовать get_the_excerpt вместо этого. Это не содержит параграфных знаков.
Вы даже можете использовать свои собственные фильтры. Что-то подобное.
<?php
$my_excerpt = get_the_excerpt();
if ( '' != $my_excerpt ) {
// Выполняются некоторые манипуляции со строками
}
echo $my_excerpt; // Выводит обработанное значение на страницу
?>
Посмотрите больше в кодексе
https://codex.wordpress.org/Function_Reference/get_the_excerpt
Есть разница между get_the и просто аннотацией. Возвращая аннотацию без “get”, автоматически включает echo. Он также очищает результат и добавляет параграфные знаки. Если вы хотите выполнить манипуляцию перед возвращением, вам нужно “получить” содержание аннотации, манипулировать им, а затем вывести его.
Поэтому используйте
<?php echo get_the_excerpt(); ?>
Ответ или решение
Чтобы принудительно заставить WordPress использовать тег <br>
в_excerpt, необходимо двигаться по нескольким направлениям, учитывая проблемы с автором и требования к дизайну. Давайте рассмотрим этот вопрос подробней.
Проблема и её решение
Вы уже столкнулись с известной проблемой WordPress, где редактор заменяет два тега <br>
на тег <p>
. Из-за этого ваше содержание теряет нужный формат. Ниже приведены шаги, которые помогут решить эту проблему.
1. Отключение фильтра wpautop
Вы уже отключили фильтр wpautop
для the_content
, что позволяет избежать автоматического добавления тегов <p>
. Вам также нужно сделать это для the_excerpt
, чтобы такой же результат был получен и в ваших выдержках:
remove_filter('the_excerpt', 'wpautop');
Однако это не всегда решает основную проблему. Даже после отключения wpautop
, WordPress может по-прежнему обрабатывать двух- и более кратные переносы строк неправильно.
2. Использование функции get_the_excerpt()
Как вы уже отмечали в обсуждении, функция get_the_excerpt()
возвращает строку без автоматического добавления тегов <p>
. Если вы сделаете это следующим образом, вы сможете подготовить свою выдержку к дальнейшему форматированию:
$my_excerpt = get_the_excerpt();
if ('' != $my_excerpt) {
// Дополнительная обработка строки, если необходимо
}
echo $my_excerpt; // Вывод обработанной строки на страницу
3. Добавление своих фильтров
Чтобы решить проблему с преобразованием <br>
в <p>
, можно создать собственный фильтр для обработки выдержки после её получения. Например:
add_filter('the_excerpt', 'custom_excerpt_filter');
function custom_excerpt_filter($excerpt) {
// Заменяем двойные переносы строк на один <br>
$excerpt = str_replace(["\r\n\r\n", "\n\n", "\r\r"], '<br>', $excerpt);
return $excerpt;
}
Этот фильтр позволит заменить дублирующиеся переносы строк на один тег <br>
и не преобразует их в тексты с тегами <p>
.
4. Стиль для выдержек
Чтобы сохранить свои стили, можно использовать ранее упомянутый вами код для добавления классов к тегам <p>
. Так как вы хотите финализировать вывод с заданными стилями, вам может понадобиться адаптировать ваш код следующим образом:
add_filter("the_excerpt", "add_class_to_excerpt");
function add_class_to_excerpt($excerpt) {
// Заменяем тег <p> с вашими стилями
return str_replace('<p', '<p class="short-desc" style="text-align: justify;"', $excerpt);
}
Итоги
Таким образом, воспользовавшись вышеперечисленными методами, вы сможете заставить WordPress корректно работать с тегами <br>
в_excerpt или обойтись совсем без тегов <p>
в случае необходимости. Эти настройки не только решат проблему с стилем вашего контента, но и помогут обеспечить нужный дизайн вашего сайта.
При этом важно периодически проверять обновления WordPress и следить за поддержкой используемых фильтров, так как изменения в коде платформы могут повлиять на функциональность.