By default WordPress excerpts are set to 55 words and there is an excerpt_length filter which allows you to change this default value to your length of choice. But what if you wanted a different excerpt length on your portfolio then those on your blog archives?
Well, I recently stumbled across a really great function that allows you to set custom excerpt lengths for multiple instances throughout your theme. All you have to do is paste the function into your functions.php file (or where appropriate – I like to have it on a separate file and use an include function) and then you can call your excerpts and define your length for each call.
Custom Excerpt Function:
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(']]>', ']]>', $content);
return $content;
}
How To Use The Function:
Now instead of using “the_excerpt()” in your loops you can use “excerpt($limit)”, where the limit variable is the amount of words you want to show for that excerpt.
Example:
< ?php echo excerpt(25); ? >
Update: Using wp_trim_words
WordPress now has a function called wp_trim_words() which will allow you to essentially do the same thing mentioned above and not just for excerpts. You can actually trim any piece of text. You can learn more about the function here.
Basically if you want to trim the excerpt using wp_trim_words you would add something like this:
< ?php
$content = get_the_content();
echo wp_trim_words( $content , '25' );
? >
That would trim your content to 25 words so you can create your own custom excerpt lengths – very useful for custom post types and shortcodes where different ones might look best with different excerpt lengths.