How to Add Updated Date to WordPress Articles

It is a good idea to add updated post date and time to your WordPress posts to let search engines know when your post was updated. As search engines have started giving higher search engine rankings to  recently posted articles or updated content, it is essential to post updated dates.

Advertisements

Structured Data Errors

We analysed the new structured data reports in Google webmaster tools and saw thousands of errors on all posts and pages. When we tested the rich snippet testing tool, there were no errors.

structureddataerror

The errors were caused by missing updated class in the hatom microdata.

missing updated errors

If you read the hentry guidelines, you find that updated is a required field (not the published date!). In fact only entry-title and updated are required 2 classes, rest are all optional. So it is a great idea to add updated classes to your post.

If you remember, we had added both the published and updated dates for quite some time, but then Google ignores the updated date. So maybe it is a better idea to only show updated dates.

Display Updated Date

While we discussed how to add updated date by direct php code insertion in the post, when I checked my Twenty Fourteen WordPress theme, it was not so easy to edit it.

Since we use a child theme (which you should always do for any theme), we needed to add some code to the functions.php file to edit the post meta information.

If you check the content.php file in your theme, the particular code twentyfourteen_posted_on  outputs the post meta, and is located in the template-tags.php. The detailed code looks like this

if ( ! function_exists( 'twentyfourteen_posted_on' ) ) :
/**
* Print HTML with meta information for the current post-date/time and author.
*
* @since Twenty Fourteen 1.0
*
* @return void
*/
function twentyfourteen_posted_on() {
if ( is_sticky() && is_home() && ! is_paged() ) {
echo '<span class="featured-post">' . __( 'Sticky', 'twentyfourteen' ) . '</span>';
}

// Set up and print post meta information.
printf( '<span class="entry-date"><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="%4$s" rel="author">%5$s</a></span></span>',
esc_url( get_permalink() ),
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
get_the_author()
);
}
endif;

Here are the changes we will make to this code and then add to the child themes functions.php file. Remember to keep a back up of this file as any error will need the original to be replaced via FTP.

  1. Show Updated Date - So we will edit this to replace the get_the_date with get_the_modified_date code. This will serve the updated date instead of the published date.
  2. Updated Class – Add the updated class to the date so that the hentry microdata becomes valid and the structured data errors are gone.
  3. Show Updated Text –  it is a good idea to show updated text besides the date to let readers know that this is the updated date and not the original post published date. You do not want people to find 5 year old comments in a post which shows a month old date.

So here is the same code we have modified *changes seen in bold and underline). You can check this live on our site now.

if ( ! function_exists( 'twentyfourteen_posted_on' ) ) :
/**
* Print HTML with meta information for the current post-date/time and author.
*
* @since Twenty Fourteen 1.0
*
* @return void
*/
function twentyfourteen_posted_on() {
if ( is_sticky() && is_home() && ! is_paged() ) {
echo '<span class="featured-post">' . __( 'Sticky', 'twentyfourteen' ) . '</span>';
}

// Set up and print post meta information.
printf( 'UPDATED <span class="entry-date updated"><a href="%1$s" rel="bookmark"><time class="entry-date updated" datetime="%2$s">%3$s</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="%4$s" rel="author">%5$s</a></span></span>',
esc_url( get_permalink() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
get_the_author()
);
}
endif;

NOTE: Please do these changes at your own risk. We take no responsibility of how this will affect your site rankings  in search engine results.

31 thoughts on “How to Add Updated Date to WordPress Articles”

  1. Nice article, used it to create this function for the twentytwelve theme (add it to functions.php in the child theme):

    
    function twentytwelve_entry_meta() {
    	// Translators: used between list items, there is a space after the comma.
    	$categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) );
    
    	// Translators: used between list items, there is a space after the comma.
    	$tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) );
    
    	$is_updated_post = (get_the_modified_date( 'U' ) > get_the_date( 'U' ));
    	if ( $is_updated_post ) {
    		$date = sprintf( '%4$s',
    			esc_url( get_permalink() ),
    			esc_attr( get_the_modified_date() ),
    			esc_attr( get_the_modified_date( 'c' ) ),
    			esc_html( get_the_modified_date() )
    		);
    	} else {
    		$date = sprintf( '%4$s',
    			esc_url( get_permalink() ),
    			esc_attr( get_the_time() ),
    			esc_attr( get_the_date( 'c' ) ),
    			esc_html( get_the_date() )
    		);
    	}
    
    
    	$author = sprintf( '%3$s',
    		esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
    		esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
    		get_the_author()
    	);
    
    	// Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name.
    	if ( $tag_list ) {
    		if ($is_updated_post) { 
    			$utility_text = __( 'This entry in %1$s and tagged %2$s was updated on %3$s by %4$s.', 'twentytwelve' );
    		} else {
    			$utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s by %4$s.', 'twentytwelve' );
    		}
    	} elseif ( $categories_list ) {
    		if ($is_updated_post) {
    			$utility_text = __( 'This entry in %1$s was updated on %3$s by %4$s.', 'twentytwelve' );
    		} else {
    			$utility_text = __( 'This entry was posted in %1$s on %3$s by %4$s.', 'twentytwelve' );
    		}
    	} else {
    		if ($is_updated_post) {
    			$utility_text = __( 'This entry was updated on %3$s by %4$s.', 'twentytwelve' );
    		} else {
    			$utility_text = __( 'This entry was posted on %3$s by %4$s.', 'twentytwelve' );
    		}
    	}
    
    	printf(
    		$utility_text,
    		$categories_list,
    		$tag_list,
    		$date,
    		$author
    	);
    }
    
    1. I have hardly any idea of how to do this. I’m using thesis theme, so if I copy/past this code into the functions.php it will work?

  2. Great idea. Would love an update date on some blog posts without removing the original post date. Haha … too complicated for me … I wait until it comes out of the box to WordPress …

  3. Why not just use Isn’t it a lot easier as a built in function where you can change the display type in Settings > General ??
    suggest me if i am wrong.

    -Shital

  4. Nice! Since search engines want us to be updating our content as much as possible then the date issue on posts really makes sense. I have surely liked your article.
    Great ideas.

  5. I was searching this for a long time. It is very helpful and interesting material for me.I appreciate you for the informative work….

Leave a Reply

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

CAPTCHA Image

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>