Ограничить выдержку количеством символов, но НЕ обрезать последнее слово. Это позволит вам вернуть максимальное количество символов, но сохранить полные слова, поэтому будут возвращены только те слова, которые могут уместиться в пределах указанного ограничения по количеству, и вы сможете указать источник, откуда будет взят фрагмент.
function get_excerpt($limit, $source = null){
$excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
$excerpt = strip_shortcodes($excerpt);
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $limit);
$excerpt = substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
$excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>';
return $excerpt;
}
/*
Sample... Lorem ipsum habitant morbi (26 characters total)
Returns first three words which is exactly 21 characters including spaces
Example.. echo get_excerpt(21);
Result... Lorem ipsum habitant
Returns same as above, not enough characters in limit to return last word
Example.. echo get_excerpt(24);
Result... Lorem ipsum habitant
Returns all 26 chars of our content, 30 char limit given, only 26 characters needed.
Example.. echo get_excerpt(30);
Result... Lorem ipsum habitant morbi
*/
Эта функция может использоваться несколько раз в файлах темы, для каждого из которых указаны разные ограничения символов.
Эта функция имеет возможность получить отрывок из любого,
Например, если у вас есть посты, которые содержат текст в поле _excerpt на экране редактора постов, но вместо этого вы хотите извлечь отрывок из тела _content для особого случая использования, который вы вместо этого сделаете;
get_excerpt(140, 'content'); //excerpt is grabbed from get_the_content
Указывает функции, что вы хотите первые 140 символов из the_content
, независимо от того, установлена ли выдержка в поле the_excerpt
.
get_excerpt(140); //excerpt is grabbed from get_the_excerpt
Это говорит функции, что вы хотите, чтобы первые 140 символов начинались с the_excerpt
первыми, где выдержка не существует, the_content
будет использоваться как запасной вариант.
Эту функцию можно улучшить, сделав ее более эффективной и включив ее с использованием фильтров WordPress для the_content
или the_excerpt
или просто используя как есть в ситуациях, когда не существует подходящей встроенной альтернативы WordPress API. .