четверг, 24 апреля 2014 г.

Auto Excerpt для WordPress

В WordPress есть замечательная функция the_excerpt() для вывода короткой цитаты поста.
Но бывает так, что надо вывести цитату определенной длины, не потеряв при этом форматирование.
    Но при попытке сохранить форматирование, обрезав контент, мы также обрезаем теги и получаем в итоге "кашу" на странице.
    Для решения проблемы нам надо закрыть все теги для обрезанного контента.
К счастью php, начиная с версии 5,4 поддерживает Tidy HTML - утилиту для очистки и восстановления HTML.


$tidy_config = array(
     'char-encoding' => 'utf8',
     'clean' => true,
     'output-html'     => true,
     'input-html'     => true,
     'wrap-attributes'     => true,
     'wrap-php'     => false,
     'wrap'         => 0);
     
   // закрываем открытые html tags
   $tidy = tidy_parse_string($out, $tidy_config, 'UTF8'); 
   $tidy->cleanRepair(); 
   $out = $tidy;

Вот окончательная функция для получения корректной цитаты с сохранением форматирования.
За основу я взял скрипт с сайта wp-kama.ru