Display Excerpts in Twenty Twelve Theme

Here’s how you can make Twenty Twelve theme show excerpts instead of the full post. I’ll also show you how you can display a smaller thumbnail on the homepage, and remove the featured image from the single post view as well as add and customize a “Continue Reading” link.

Use a child theme

As always, it’s a good idea to create a child theme when making modifications to Twenty Twelve (or any default WordPress theme). Here’s a help article on how to crate one, there’s a blank child theme you can download at the bottom of the post. How to create a WordPress Child Theme

Once you’ve done that, copy content.php from Twenty Twelve to your child theme folder and open it.

Edit Template files

Open content.php and around line 33 find

<?php if ( is_search() ) : // Only display Excerpts for Search ?>

This conditional tells your theme to display excerpts only for the search page. To make it also display them on the home page add is_home to it like this.

<?php if ( is_search() || is_home() ) : // Display Excerpts for Search and Homepage ?>

Save and close content.php and refresh your site. You should see posts displayed as excerpts, but there’s more you can do.

The next part is totally optional. I’ll show you had to add a 140×140 thumbnail instead of the large one Twenty Twelve uses, and also how to display a “Continue Reading” link at the end of the excerpt.

Use a smaller thumbnail

Create a file called functions.php (if you already have one, add this next code to it) and open it.

We’re going to use a 140x140px size thumbnail so we need to tell WordPress to create this thumbnail size for any images that are uploaded.
Add this to your functions.php

<?php

// Add 140x140 image size 
add_image_size('excerpt-thumbnail', 140, 140, true);

Save functions.php but leave it open, there’s more code to add to it later.

Add new thumbnail to the loop

Open content.php and on line 34 fine

<div class="entry-summary">

Below this line add

	<!-- Adds the 140x140 thumbnail/featured image -->
		<div class="excerpt-thumb">
			<a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentytwelve' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark">
			<?php the_post_thumbnail('excerpt-thumbnail', 'class=alignleft'); ?>
			</a>
		</div>

This adds the thumbnail to the excerpt, aligns it to the left and links to the post. I’ve also added a css class so you can style the thumbnail if you want. Use .excerpt-thumb to style it.

If you save content.php and refresh your site, you should see a smaller post thumbnail, but also see the normal featured image above the posts as well. This needs to be removed, so in content.php go to line 18 and remove this line.

<?php the_post_thumbnail(); ?>

Save and close content.php and refresh your site. The large featured image should be gone, leaving only the left aligned 140x140px thumbnail. If you click on a post, the featured image should also be gone from there as well.

If you do want the featured image to display on the single post view as it does in the excerpt here’s how you can add it.

In content.php just below where we added the post thumbnail code, around line 41 find the line

<div class="entry-content">

Below it add

<!-- Adds 140x140 featured image to single post view -->
<div class="excerpt-thumb">
	<?php the_post_thumbnail('excerpt-thumbnail', 'class=alignleft'); ?>
</div>

Save and close content.php. You should see the left aligned post thumbnail in the content on the single posts page.

Adding the Continue Reading Link

By default the excerpt will only display […] at the end of the text. If you want a linked “Continue Reading” link instead, open functions.php and add this below the code we added earlier for the new image size.

// Remove the ... from excerpt and change the text
function change_excerpt_more()
{
  function new_excerpt_more($more)
	{
	// Use .read-more to style the link
	  return '<span class="continue-reading"> <a href="' . get_permalink() . '">Continue Reading &raquo;</a></span>';
	}
  add_filter('excerpt_more', 'new_excerpt_more');
}
add_action('after_setup_theme', 'change_excerpt_more');

This removes the […] and replaces it with our own text, hyperlinks it to the post, and also adds a css class so you can style the link if you like.
Modify the text however you want, and use .continue-reading in your style sheet to customize the link.

Save and close functions.php and view your website. Here’s a preview of what it the finished results should look like.

If your thumbnail images are not displaying the proper sizes, it’s because WordPress hasn’t created that size images yet. You can fix this by installing one of my favorite plugins Ajax Rebuild Thumbnails and running it once. It can be deactivated after that.
This plugin simple creates the 140×140 image size (or whatever image size you selected) needed for previously uploaded media.

Hope this tutorial was helpful to you. Here’s a child theme with the above code already added, use it however you like.

Comments

  1. says

    Hey, great tutorial… The only problem is that i only get 1 post on the FrontPage…. Normally i can change it at settings > reading… but if i change it there and i save it … it just doesn’t respond :O i’m just looking if i can change it in the code… but can’t really find it :( Anyone with the same problem?

  2. says

    This was fantastic help, thank you very much, I really like the way you always write “Find the line” before telling us where to put the code.

    It is very useful as some people overlook the fact that a lot of people trying to edit their files are completely new to it!

    I have now successfully implemented it all into my posts page making my twenty twelve theme look neat and tidy!

    Many Thanks :)

    • says

      Hi Vivian, make sure you’ve added

      <!-- Adds 140x140 featured image to single post view -->
      <div class="excerpt-thumb">
      	<?php the_post_thumbnail('excerpt-thumbnail', 'class=alignleft'); ?>
      </div>

      under the entry title code.

      Also make sure you’ve selected a featured image for your posts.

      If you can’t get it working, post your code from functions.php, and content.php to pastebin.com and I’ll have a look.

  3. says

    What if I don’t want this to show up on the home page. My home page is a static page and I’ve assigned another page, blog, to display current posts.

Leave a Reply