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

Изменить длину анонса — 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, '...'); ?>

Вот и все! Всем успехов!

26.03.17
Для просмотра сайта обновите браузер.