Изменить длину анонса — WordPress

Большинство сайтов на движке WordPress, как правило, содержат одну или несколько лент однотипных записей - например, новостей. В ленте выводится краткое описание записи, а при переходе к записи - уже показывается полный текст статьи. Проблема в том, как управлять длиной краткого описания?
Вывести анонс можно несколькими способами - например, используя специальный тег - the_excerpt(); который сам обрежет текст и добавит в конце непонятную конструкцию вида [...]. Или пользоваться кнопочкой - more (тег "Далее" - в визуальном редакторе) для обрезания записи в нужном месте и выводить тогда можно через стандартный the_content('Читать полностью »');.
На мой взгляд оба решения не являются достаточно гибкими и нужен третий подход, который позволит управлять длиной анонса статьи вплоть до символа. Давайте сделаем его.
Обе функции я нашел на просторах интернета и уже даже не вспомню где это было. В любом случае: большое спасибо автору!
Обрезка по словам
Сейчас мы сделаем так, что сможем управлять длиной анонса с помощью количества выводимых слов. Для этого идем в functions.php и в конец вставляем:
function do_excerpt($string, $word_limit) { $words = explode(' ', $string, ($word_limit + 1)); if (count($words) > $word_limit) array_pop($words); echo implode(' ', $words).' ...'; }
После этого достаточно в нужном месте нашего шаблона (где выводятся анонсы записей) выводить описание вот так:
<?php do_excerpt(get_the_excerpt(), 50); ?>
Где 50 и является количеством слов для вывода. После них появится многоточие.
Альтернативная функция для обрезки по словам:
function new_excerpt_length($length) { return 50; } add_filter('excerpt_length', 'new_excerpt_length');
Для вывода используем:
<?php the_excerpt('new_excerpt_length', 10); ?>
Обрезка по символам
Если вдруг кому нужна еще более точная настройка, тогда воспользуемся функцией обрезки статьи по символам:
function trim_characters($count, $after = '...'){ $excerpt = get_the_content(); $excerpt = strip_tags($excerpt); $excerpt = mb_substr($excerpt, 0, $count); $excerpt = $excerpt . $after; return $excerpt; }
И выводим соответственно:
<?php echo trim_characters(200, '...'); ?>
Вот и все! Всем успехов!