Сергей Макаров | 01.07.2012

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

	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(']]>', ']]&gt;', $content);
		return $content;
	}

 Функция strip_tags удаляет все теги из текста, устраняя таким образом возникающую проблему.

Вызов функции остается прежним.

Еще есть почитать: