Вывод анонса статьи без цитаты и тега more
| 01.07.2012

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);
return $content;
}
Вызов функции осуществляется следующим образом:
<?php echo content(25); ?>
где 25 — количество слов в цитате. Функция вызывается в шаблоне и при этом уже нет необходимости использования тега «more» («далее») или цитаты.
Но у этой функции есть недостаток. Если в начале статьи есть ссылка и наша функция обрежет ее, то часть сайта находящаяся ниже анонса будет одной сплошной ссылкой, т.е. останется не закрытый тег <а>. Чтобы такого не происходило, нужно модифицировать функцию:
function content($limit) {
$tempcontent = strip_tags (get_the_content());
$content = explode(' ', $tempcontent, $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(']]>', ']]>', $content);
return $content;
}
Функция strip_tags удаляет все теги из текста, устраняя таким образом возникающую проблему.
Вызов функции остается прежним.