DISCLAIMER: this post is older than one year and may not be up to date with latest WordPress version.

In WordPress, switching from full posts to excerpt is easy if you edit your theme files. But do you know that you could achieve the same result without editing any of your theme file? Just read this recipe to find out.

What you have to do is to paste this code into your functions.php file and let WordPress filters do the work for you.

function my_excerpts($content = false) {
        // If is the home page, an archive, or search results
	if(is_front_page() || is_archive() || is_search()) :
		global $post;
		$content = $post->post_excerpt;

	// If an excerpt is set in the Optional Excerpt box
		if($content) :
			$content = apply_filters('the_excerpt', $content);

	// If no excerpt is set
		else :
			$content = $post->post_content;
			$excerpt_length = 55;
			$words = explode(' ', $content, $excerpt_length + 1);
			if(count($words) > $excerpt_length) :
				array_push($words, '...');
				$content = implode(' ', $words);
			$content = '<p>' . $content . '</p>';


// Make sure to return the content
	return $content;


add_filter('the_content', 'my_excerpts');

Thanks to Justin Tadlock for this cool snippet!



  1. Hi!

    Amazing snippet, but I got a problem with it on my site. Do you think you can help?

    1. It counts every word, including html-tags. That isnt a big problem in it self, but it creates a problem where the closing-tag often gets placed outside the excerpt and therefore the rest of my site gets bold font if I for example used the b or strong-tag.

    Is there any way to automaticly close any open tag before the end of the excerpt?

  2. Thanks for this. Have been trying to do this without majorly upsetting the current template! Much appreciated!

Leave a Comment

Your email address will not be published. Required fields are marked *