Тег шаблона: the_excerpt
Описание
Выводит анонс текущей записи с символами '[...]' в конце, означающими, что текст записи был обрезан. Если в записи была указана 'Цитата', то анонс записи будет взят из нее, а если нет, то в качестве анонса будут взяты первые 55 слов из записи. В анонсе автоматически вырезаются все картинки и все HTML теги. Тег должен работать в пределах цикла вывода записей .
Внимание: если текущим постом является вложение (attachment.php и image.php), то в качестве анонса будет показано описание вложения, причем символы '[...]' не будут добавлены к такому анонсу.
Использование
<?php the_excerpt(); ?>
Параметры
В функции нет никаких параметров.
Примеры
1. По умолчанию
<?php the_excerpt(); ?>
Будет показан анонс текущей записи.
2. Использование с условными тегами
<?php if ( is_category() || is_archive() ) { the_excerpt(); } else { the_content('Читать дальше...'); } ?>
Данный код выведет анонсы записей на страницах рубрик или архивов и полный текст записи (до тега-разделителя <!--more-->, если он был использован) на других страницах (например, на главной странице блога).
3. Изменение длины анонса с помощью фильтра
function new_excerpt_length($length) { return 20; } add_filter('excerpt_length', 'new_excerpt_length');
Данный код, добавленный в файл functions.php шаблона уменьшит длину анонса с 55 слов до 20 слов.
4. Удаление символов '[...]' в конце анонса с помощью фильтра
function new_excerpt_more($excerpt) { return str_replace('[...]', '...', $excerpt); } add_filter('wp_trim_excerpt', 'new_excerpt_more');
Данный код, добавленный в файл functions.php заменит символы '[...]' в конце анонса на символы '...'.
function new_excerpt_more($post) { return ' <a href="'. get_permalink($post->ID) . '">' . 'читать дальше...' . '</a>'; } add_filter('excerpt_more', 'new_excerpt_more');
А этот код не только заменит символы '[...]' в конце анонса на текст 'читать дальше...', но и сделает этот текст ссылкой на полную запись.
Внимание! При заполненном поле 'Цитата' в записи никакие фильтры не будут работать - в качестве анонса записи будет выведена 'Цитата' в том виде, как она была заполнена.
Лог изменений
Функция добавлена в версии 0.71
Исходный файл
Функция the_excerpt() находится в wp-includes/post-template.php
Связанные теги\функции
the_ID, the_title, the_title_rss, the_title_attribute, single_post_title, the_content, the_content_feed, the_excerpt, the_excerpt_rss, [[wp_link_pages]], posts_nav_link, next_post_link, next_posts_link, previous_post_link, previous_posts_link, next_image_link, previous_image_link, sticky_class, the_category, the_category_rss, the_tags, the_meta

#1, 6 сентября, 2010 в 13:55
Добрый день. У меня как раз подобная ситуация, мне нужно сделать, что бы на главной и в разделах выводились нормальные превью, а в тэгах и архивах выводились только названия постов. Я открыл post-template.php, но так и не понял, что именно в нём нужно поменять для осуществления таких результатов.
Если бы у меня был tag.php, то я бы в нём отдельно прописал бы нужную функцию, а потом ещё в архивах...но у меня в шаблоне отсутствует tag.php, и получается, что архивы, тэги и разделы собраны в одном archive.php, и если поменять там, то тогда везде будет выводиться пост с одним только названием. Помогите пожалуйста.
#2, 6 сентября, 2010 в 14:02
Я в своём archive.php заменил
на предложенный вами <
...да, посты стали выводиться с одним только названием и несколькими словами текста, но почему то они вывелись такими и на тэгах, и на архивах, и на разделах....а мне бы в разделах оставить обычные превью, такие как на заглавной. Помогите пожалуйста.
#3, 6 сентября, 2010 в 15:29
в вашем случае лучше использовать не такой разделительный код, а отдельные файлы шаблона. скажем в файле для рубрик category.php будет the_content, а в файле архивов archive.php будет the_excerpt и тд.
#4, 6 сентября, 2010 в 16:42
....спасибо, что отозвались на мою просьбу......но вот просто в этом то и проблема...в моём новом шаблоне отсутствует: tag.php и category.php, и всё вместе как бы сконцентрировано в одном файле: archive.php, и когда я там меняю the_content на the_excerpt, одновременно меняются и архивы, и категории, и тэги =(
#5, 6 сентября, 2010 в 16:54
ну так это не слишком хорошо для юзабилити сайта - если вы захотите что-либо изменить скажем в отображении только рубрик, то вам придется в вашем archive.php городить сплошные if ( is_category() ) и тд и тп.
на данном этапе проще всего добавить эти недостающие файлы шаблона. сделать их очень просто - берете archive.php и сохраняете копию как category.php и tag.php и тд. и уже в нужном файле шаблона редактируете что и как вам нужно.
#6, 6 сентября, 2010 в 19:58
....спасибо вам огромное, ваш совет очень мне помог!!! Вы единственный, кто смог помочь мне в этом вопросе!!! Ещё раз огромное вам спасибо, и если что, то обращайтесь по любому вопросу ;)
#7, 2 февраля, 2011 в 13:35
у меня в шаблоне используется
И ссылка read more, появляется, если превышает лимит символов 55. А как сделать так, чтобы независимо от лимита, ссылка всегда была?
#8, 2 февраля, 2011 в 14:41
прописать в шаблоне что-то типа:
внутри цикла вывода записей конечно.