Как заставить wp excerpt использовать тег br?

Вопрос или проблема

Редактор 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 и следить за поддержкой используемых фильтров, так как изменения в коде платформы могут повлиять на функциональность.

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

Капча загружается...