WordPress: вывод анонса с заданным количеством слов

Не раз сталкивался с ситуацией, когда необходимо было выводить анонс, ограничив его длину заданным количество слов.

Для этого я использую нижеследующую простенькую функцию.

В файл functions.php WordPress-темы необходимо вставить следующий код:

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 – это количество слов, которым мы хотим ограничить длину анонса.

Другой вариант

Если вы используете WordPress версии 2.9 или выше, то можно задействовать следующую более упрощенную конструкцию:

function new_excerpt_length($length) {
	return 50;
}
add_filter('excerpt_length', 'new_excerpt_length');

Код также необходимо вставить в файл functions.php.

Комментарии (31)

  1. Алексей
    7 ноября 2013 г. в 20:06

    Мне помог 2 вариант! Потратил пол дня пока не нашел ответ на вашем блоге..:)

  2. Rita
    11 января 2014 г. в 14:49

    Да второй вариант сработал на УРА) спасибо огромное!

    function new_excerpt_length($length) {  
      return 10;  
    }  
    add_filter('excerpt_length', 'new_excerpt_length'); 

    это в functions.php

    <?php the_excerpt('new_excerpt_length', 10); ?>

    а это в свой код вывода и все супер)

    1. 6 августа 2015 г. в 14:26 / ответ на коммент Rita
      function new_excerpt_length($length) { 
       return 10; 
      } 
      add_filter('excerpt_length', 'new_excerpt_length'); 

      а где тут указана строка, длину которой ограничивает эта функция?

  3. Сергей
    29 июля 2014 г. в 12:43

    А куда именно вставлять этот код в файл functions.php?

    1. Вставьте в самый конец файла перед ?>.

  4. Сергей
    29 июля 2014 г. в 21:09

    Не получилось. Делал всё как Вы писали. Возможно что тема не позволяет это осуществить?

    1. От темы не должно зависеть. Я много раз использовал оба варианта в разных темах – всегда работает.

      1. Сергей
        30 июля 2014 г. в 11:39 / ответ на коммент Dimox

        Dimox, пробовал и с другими темами, но результат отрицательный. Вывод, что то я делаю не так. Вы не могли мне помочь? Если я вышлю файл functions.php, или название темы, а Вы пришлёте исправленный файл functions.php.

  5. Роман
    27 января 2015 г. в 02:16

    Здравствуйте! Способ замечательный! Только вот мне нужно, чтобы это было не количество слов, а количество символов. Подскажите пожалуйста, можно ли такое провернуть с этим скриптом?

    1. 27 января 2015 г. в 11:50 / ответ на коммент Роман

      Функция для обрезки по символам:

      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, '...'); ?>
      1. Роман
        28 января 2015 г. в 01:31 / ответ на коммент Dimox

        Огромнейшее!!! Человеческое!!!! Спасибо!!!!!

      2. Alex
        5 августа 2017 г. в 15:27 / ответ на коммент Dimox

        Спасибо помогло! Скажите, а как сделать, вывод заголовка по символам?

  6. 24 марта 2015 г. в 23:18

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

    Спасибо.

  7. Сергей
    15 августа 2015 г. в 14:05

    Спасибо большое! Ограничение для обрезки по символам – это именно то, что я искал!

  8. Артем
    22 сентября 2015 г. в 13:18

    Доброго дня! Подскажите пожалуйста, можно ли выбирать не только количество (длину) анонса, но и устанавливать его начало (с какого места начинать)?

    1. 22 сентября 2015 г. в 14:17 / ответ на коммент Артем

      К сожалению, нельзя.

      1. egorka
        2 февраля 2016 г. в 15:09 / ответ на коммент Dimox

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

        1. 2 февраля 2016 г. в 16:40 / ответ на коммент egorka

          Можно вывести ее плагином Kama Thumbnail.

          1. egorka
            2 февраля 2016 г. в 19:47 / ответ на коммент Dimox

            А он уже сделает миниатюры для добавленных ?или нужно заново обновлять

            1. 2 февраля 2016 г. в 22:42 / ответ на коммент egorka

              Создаст новые.

              1. egorka
                4 февраля 2016 г. в 02:28 / ответ на коммент Dimox

                не понимаю как сделать так, чтобы у готовых записей сделалась миниатюра

                1. egorka
                  4 февраля 2016 г. в 02:31 / ответ на коммент egorka

                  разобрался, спасибо за совет

  9. Сергей
    18 декабря 2015 г. в 12:11

    Скажите, а к анонсам в разделе категории эта функция применима? если да, то в каком месте вставлять этот код? Долбусь и не могу понять. Пока что новичёк

  10. Дмитрий
    8 июля 2016 г. в 12:35

    Спасибо! второй вариант сработал! В качестве лайка – 2 перехода по рекламе )

  11. Александр
    12 декабря 2016 г. в 15:39

    Спасибо!

  12. 3 февраля 2017 г. в 03:18

    Подскажите пож. как сделать так чтобы на странице отображался только аннонс комментария, а дальше при желании…по ссылке перейти на страницу где уже полный текст?

  13. Sports
    9 октября 2017 г. в 20:36

    Здравствуйте, вывод анонса обрезается вот такой конструкцией […], как изменить ее? Чтобы было просто ….

    1. 9 октября 2017 г. в 20:50 / ответ на коммент Sports
      function trim_excerpt($text) {
      	return str_replace('[...]', '...', $text);
      }
      add_filter('get_the_excerpt', 'trim_excerpt');
      
      1. yenkebai@mail.ru
        30 июля 2020 г. в 12:53 / ответ на коммент Dimox

        После этого в то место шаблона, где нужно отобразить анонсы постов, вставить вот такой код: – а где находится это место ? Заранее спасибо.

  14. Эд
    26 марта 2018 г. в 13:34

    Огромное спасибо, помогли. Буду рад, если поможете сделать вывод заголовков справа от картинки. Весь интернет обыскал уже.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код