WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

the_excerpt() WP 0.71

Выводит отрывок (цитату) поста, со вставкой в конец [...] (но это не ссылка на прочтение полного материала).

Если поле "Цитата" не указано для поста (указывается при публикации), то функция "создаст" цитату самостоятельно, путем обрезки начальной части контента поста (будут взяты первые 55 слов контента). HTML теги или графика, будут предварительно вырезаны, поэтому они не будут выводится и учитываться при подсчете.

the_excerpt() нужно использовать внутри Цикла WordPress.

Заметка: Если текущая запись является вложением (обычно выводится в цикла файлов шаблона: attachment.php и image.php), то the_excerpt() выведет текст указанный в поле "описание" (Caption) и текст не будет иметь на конце конструкции [...].

the_excerpt() и the_content()

Иногда лучше использовать the_content(), потому что она понимает тег <!--more-->, указанный в контенте записи и выводит то, что выше этого тега.

Работает на основе: get_the_excerpt()
✈ 1 раз = 0.007916с = очень медленно | 50000 раз = 5.61с = быстро PHP 7.1.2, WP 4.7.3
Хуки из функции:
Возвращает

Ничего. Выводит на экран короткий текст.

Использование

<?php the_excerpt(); ?>

Примеры

#1. Базовое использование

Выведем "Цитату" поста на страницах архивов (категории, метки, авторы, даты):

<?php the_excerpt(); ?>

#2. Использование вместе с условными тегами

Проверим является ли данная страница разделом категории, если да, то заменим the_content() на the_excerpt():

if ( is_category() ) {
	the_excerpt();
}
else {
	the_content();
}

#3. Изменение длины обрезаемого текста

По умолчанию, длина по которому режется текст - это 55 слов, чтобы изменить этот параметр, можно использовать фильтр excerpt_length, для этого поместите такой код в файл темы functions.php:

add_filter( 'excerpt_length', function(){
	return 20;
} );

#4. Удаление конструкции [...] на конце

По умолчанию, если текст обрезается, то в конце добавляется [...], изменить [...] можно через фильтр excerpt_more. Добавим такой код в файл темы functions.php:

add_filter('excerpt_more', function($more) {
	return '...';
});

#5. Создаем ссылку "Читать дальше..." на конце

Опять используем фильтр excerpt_more (для 2.9+). Скопируйте такой код в файл темы functions.php:

add_filter( 'excerpt_more', 'new_excerpt_more' );
function new_excerpt_more( $more ){
	global $post;
	return '<a href="'. get_permalink($post) . '">Читать дальше...</a>';
}

Код the_excerpt: wp-includes/post-template.php VER 5.0

<?php
function the_excerpt() {

	/**
	 * Filters the displayed post excerpt.
	 *
	 * @since 0.71
	 *
	 * @see get_the_excerpt()
	 *
	 * @param string $post_excerpt The post excerpt.
	 */
	echo apply_filters( 'the_excerpt', get_the_excerpt() );
}

Cвязанные функции

Из метки: excerpt (цитата отрывок фрагмент)

Еще из метки: loop (Цикл WP)

Еще из раздела: Записи: посты, страницы, ...

Еще из тегов шаблона: Записи: посты, страницы, ...

37 комментов
Полезные 2 Вопросы 4 Все
  • БГ cайт: dedavova.ru

    Здравствуйте!

    Если изменению длины анонса "мешает" плагин (который тоже нужен на сайте), в котором тоже устанавливается своя длина анонса, то можно ли все-таки (не удаляя плагина) изменить excerpt_length?

    Ответить7.2 лет назад #
    • Kama7100

      Да, выставите приоритет для вашего фильтра выше чем он у фильтра плагина: делается это в третьем параметре функции add_filter():

      add_filter('excerpt_length', 'new_excerpt_length', 99999);

      Еще одно решение — это выключить фильтр плагина функцией remove_filter(), но выключать нужно после того как плагин добавит этот фильтр (например, где-нить в шаблоне можно или через хук wp_head).

      1
      Ответить7.2 лет назад #
  • БГ cайт: dedavova.ru

    Да, спасибо. Добавлением приоритета не получилось, наверное потому, что в плагине использовался другой фильтр

    remove_filter('get_the_excerpt', 'wp_trim_excerpt');

    Вернула родной get_the_excerpt;, а потом к нему уже добавила фильтр для excerpt_length.

    1
    Ответить7.2 лет назад #
  • @ Виталий cайт: webspilka.com

    применение фильтра

    <?php if ( is_category() ) {
    	the_excerpt();
    } else {
    	the_content();
    } ?>

    Хорошо обрезает текст поста, но если задана цитата ее не обрезает
    Можно ли заставить этот фильтр обрезать цитату ?

    Ответить7 лет назад #
  • Sergey

    А у меня такой случай. У меня и в слайдере и в обычных новостях используется для обрезания the_except();. Как мне для слайдера убрать ссылку "далее", что бы не затронуть обычные статьи, где эта ссылка нужна? И можно ли создать вторую функцию the_except2();, к примеру, но туда вставить уже нужные мне аргументы для слайдера?

    Ответить7 лет назад #
    • Kama7100

      В сайдбаре используйте другую функцию обрезки, например мою: kama_excerpt

      Ответить7 лет назад #
      • Sergey

        Kama, спасибо, то что надо. Очень выручили.

        Ответить7 лет назад #
  • Евгений cайт: how-to-foto.ru

    К сведению: делал тему на базе TwentyTen и столкнулся с такой ситуацией:
    -сделал цикл loop-category для вывода постов категорий и подключил его в category.php
    -тот же цикл использовал в шаблоне статичной страницы, которую поставил главной, но для этой страницы сделал свой запрос для конкретной категории.
    -в цикле использовал the_excerpt()

    И получил смешной результат - на главной странице the_excerpt() не видит тэга more и обрезает текст поста по длине, а в категории - видит и обрезает текст по нему. Видимо, есть какой-то нюанс, связанный либо с ID поста, либо с query_posts

    Ответить6.5 лет назад #
  • Булат cайт: ilikeits.ru

    А как вывести цитаты из определенной рубрики?

    Ответить6.5 лет назад #
  • Денис cайт: fotopult.com

    А подскажите что написать вместо the_excerpt()и the_content(), чтобы на главной для записи выводилось описание из поля "meta description"

    Ответить6 лет назад #
  • Евгений cайт: 4brain.ru

    Спасибо, единственный ресурс, где я нашел как увеличить размер цитаты)

    Ответить5.5 лет назад #
  • @ Владимир

    Один из полезнейших ресурсов. Спасибо!

    Ответить5.2 лет назад #
  • Юрий

    А как можно перенести кнопку Читать далее чтоб она была с новой строки ? и как к ней прописать стили

    Ответить5.2 лет назад #
    • stas cайт: mne20.ru

      Оберни в div, а ему задай стиль

      Ответить5 лет назад #
Здравствуйте, !     Войти . Зарегистрироваться