WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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.3

<?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)

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

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

38 комментов
Полезные 2 Вопросы 5 Все
  • Ivan

    Почему может странно работать get_the_excerpt()? Задача в том, чтобы выводить случайные куски записей (поле отрывок не заполняю).

    <?php 
    	$random_post = get_posts('orderby=rand&numberposts=1');
    	$random_post = array_shift( $random_post );
    	$link = get_permalink( $random_post );
    	$title = get_the_title( $random_post );
    	$excerpt_load_more = get_the_excerpt( $random_post );
    ?>
    
    <h4>
    <a href="<?php echo $link; ?>" ><?php echo $title; ?></a>
    </h4>
    <p class="entry-meta"><?php echo $excerpt_load_more; ?></p>
    

    Вроде бы вычленяет $random_post, поскольку $title и $link правильно (случайно) определяются, а вот $excerpt_load_more выводит по дате, от последних к первым. Причем пробовал the_excerpt, the_content и даже вручную проставлял get_the_excerpt(123)

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