Excerpt и Trim – устанавливаем длину анонса записи в блоге
Как вы уже наверное успели заметить, каждый блог имеет свой уникальный вид: дизайн, структура, функциональность, а также вывод записей: длина превью записей в каждом отдельном блоге может быть разной.
По умолчанию количество слов в анонсе равно 55. За этот момент отвечает функция <?php the_excerpt(); ?>. Но, что делать если вам вдруг захотелось уменьшить количество выводимых слов в превью новостей? К примеру, вы решили сделать небольшой редизайн, уменьшили изображение-миниатюру, а текст-превью так и остался длинным, как же его уменьшить?
Вот тут-то и можно воспользоваться той же функцией excerpt, но усовершенствованной bavotasan (Chris Bavota).
Итак, что нам необходимо предпринять.
Открываем файл functions.php, который находится в корне темы и добавляем в него код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function excerpt($limit) { $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt)>=$limit) { array_pop($excerpt); $excerpt = implode(" ",$excerpt).'...'; } else { $excerpt = implode(" ",$excerpt); } $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt); return $excerpt; } function content($limit) { $content = explode(' ', get_the_content(), $limit); if (count($content)>=$limit) { array_pop($content); $content = implode(" ",$content).'...'; } else { $content = implode(" ",$content); } $content = preg_replace('/\[.+\]/','', $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]&gt;', $content); return $content; } |
И теперь достаточно вместо the_excerpt() использовать для вывода анонса excerpt($limit), указания дл якоторой мы только что прописали в functions.php.
Например, выведем вместо 55 слов всего лишь 30:
1 |
<?php echo excerpt(30); ?> |
НО! Но есть одно “но”. На мой взгляд о функции <?php the_excerpt(); ?> должен знать каждый, кто интересуется созданием сайтов, кто ведет свой блог и старается управлять ним самостоятельно, но вот здесь и появляется одно “но” – на смену этой функции пришла более продуманная, более легкая и усовершенствованная функция wp_trim_words(), которая не ограничена в количестве слов. Больше нет надобности беспокоиться о максимальных 55 словах в анонсе, теперь вы сами решаете какое количество слов будет появляться в превью записи.
Вместо
1 |
<?php the_excerpt(); ?> |
в месте вывода анонса добавляем следующий код:
1 |
<?php echo wp_trim_words( get_the_content(), 150 ); ?> |
где 150 – количество слов в анонсе, которое вы можете изменить на любое другое.
Мы познакомились с двумя замечательными функциями: excerpt($limit) и wp_trim_words(), которые отвечают за количество выводимых слов в анонсе поста, какую из них использовать решать только вам.
Блин а я мучился по старинке (((
Вот что мне помогло. Огромное СПАСИБО!!!
Не за что! Хорошо узнавать нечто новое и полезное))
А у меня почему-то текст появляется (обрезанный как надо), а потом проподает
Даже, честно говоря, не знаю, что в этом случае сказать – с таким еще ни разу не сталкивалась, всегдя если уж менялось, то окончательно.
Возможно, если меняли excerpt на trim, то некорректно код изменили, или упустили что-то. Может кеш срабатывать.
А как можно изменить длину анонса в фиде rss, а в анонсах на блоге оставить такой же? То есть сделать разной длинны.