Оставляем html форматирование в the_excerpt() WordPress

  • Vadim Tsukanov
    Разработчик
  • Дата публикации
    21.12.2019
  • Категория
    Wordpress
html в the_excerpt
Задача:Выводить введение записи согласно html верстке

Довольно частое явление — необходимо,чтобы введение, на карточке блога выводилось согласно html разметке. Однако по дефолту wordpress «фильтрует» все теги и выплевывает весь текст в одном <p>.

По сути нам необходимо просто убрать этот фильтр, и разрешить вставлять html. Однако функция зашита в ядре, поэтому необходимо грамотно все отфильтровать, чтобы не потерять все, при первом же обновлении.

В файл functions.php темы добавляем:

function lt_html_excerpt($text) { 
    global $post;
    if ( '' == $text ) {
        $text = get_the_content('');
        $text = apply_filters('the_content', $text);
        $text = str_replace('\]\]\>', ']]>', $text);
        $text = strip_tags($text,'<p><br><b><a><em><strong>');
        $excerpt_length = 55;
        $words = explode(' ', $text, $excerpt_length + 1);
        if (count($words)> $excerpt_length) {
            array_pop($words);
            array_push($words, '[...]');
            $text = implode(' ', $words);
        }
    }
    return $text;
}

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'lt_html_excerpt');

Данный код не сильно нуждается в комментировании, поэтому просто оставлю его здесь, в качестве шпаргалки.

5 Комментариев

Оформить заказ в Devstages