the_excerpt c картинками и регулируемой длиной
Опубликовано 19 января, 2010 в WordPressВ шаблонах WordPress есть 2 варианта вывода тела записи – the_excerpt() (короткая запись) или the_content() (полная запись), первый вариант используется преимущественно в категориях (когда лень расставлять теги more), второй – внутри записи по нажатию на “подробнее” из категории. Часто хочется выводить короткую запись с картинкой, а также регулировать ее длину, но так как чтобы изменить the_excerpt(), нужно копать внутренности самого двига, приходится довольствоваться тем, что есть.
Вот самое простое решение, которое удовлетворит ваше “хочу”. Вставляем в functions.php шаблона следующую функцию:
function the_excerpt2($post, $count = 30) {
if(empty($post)) {
the_excerpt();
return false;
}
$content = trim(strip_tags($post->post_content));
$content = explode(' ', $content);
$content = array_slice($content, 0, $count);
$content = implode(' ', $content);
preg_match('/src=\"(.*)\"/Usi', $post->post_content, $img);
if(!empty($img[1])) $img = '<img align="left" src="'.$img[1].'" width="150" />';
else $img = '';
echo $img.'<p>'.$content.' [...]</p>'; return true;
return true;
}
А теперь во всех шаблонах, где это требуется, заменяем функцию the_excerpt() на the_excerpt2($post, 40), где 40 – это количество слов, которые необходимо выводить в превью.
В итоге получаем:
Выводится первая картинка поста, если ее удалось спарсить. Удачи.

Комментариев: 2. Обязательно оставьте свой!
В функции width=150 у картинки – это подстраиваем под себя разумеется, иногда лучше присваивать height
+только сейчас обнаружил, что регулировать длину записи можно только в пределах длины стандартного the_excerpt
Небольшое дополнения – если хотите и тег more чтобы учитывался, добавьте в начало функции строки
if(substr_count($post->post_content, '<!--more-->')) { $post->post_content = explode('<!--more-->', $post->post_content); $post->post_content = $post->post_content[0]; }