Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

How to Display a List of Last Updated Posts in WordPress

Editorial Note: We earn a commission from partner links on WPBeginner. Commissions do not affect our editors' opinions or evaluations. Learn more about Editorial Process.

At WPBeginner, we show last modified date instead of original published date for all of our articles. We think it is bad idea to remove dates from your WordPress blog posts. If you are using last modified date, then you might want to show a list of your recently updated posts on your site. In this article, we will show you how to display a list of last updated posts in WordPress.

Each time you update a post, WordPress stores the date and time of that update in the posts table as last updated date. We will show you how to create a custom WordPress query to list your most recently updated articles.

Copy and paste this code in a site-specific plugin or your theme’s functions.php file.


function wpb_lastupdated_posts() { 

// Query Arguments
$lastupdated_args = array(
'orderby' => 'modified',
'ignore_sticky_posts' => '1'
);

//Loop to display 5 recently updated posts
$lastupdated_loop = new WP_Query( $lastupdated_args );
$counter = 1;
$string .= '<ul>';
while( $lastupdated_loop->have_posts() && $counter < 5 ) : $lastupdated_loop->the_post();
$string .= '<li><a href="' . get_permalink( $lastupdated_loop->post->ID ) . '"> ' .get_the_title( $lastupdated_loop->post->ID ) . '</a> ( '. get_the_modified_date() .') </li>';
$counter++;
endwhile; 
$string .= '</ul>';
return $string;
wp_reset_postdata(); 
} 

//add a shortcode
add_shortcode('lastupdated-posts', 'wpb_lastupdated_posts');

That’s all. Now if you want to display last updated posts in your theme’s template files, then you can use it like this:

<?php 
if (function_exists(wpb_lastupdated_posts)) : 
wpb_lastupdated_posts();
endif;
?>

To display last updated posts in WordPress posts, pages, and widgets, then you can use the shortcode [lastupdated-posts].

There are many different ways to sort your articles in WordPress. Aside from the ascending, descending, and random order, you can also display posts by expiration date. With this article, you can now show posts by the last modified time.

How would you use this on your site? Are you displaying original published date or last modified date? Let us know by leaving a comment below.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us. Here's our editorial process.

Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit - a collection of WordPress related products and resources that every professional should have!

Reader Interactions

38 CommentsLeave a Reply

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Thomas Mirke says

    Hi,
    i modified the code from “modified” to “date”. Then i noticed, that $lastupdated_loop->have_posts() is limited to the number of last posts which is presented on the main page. What is to do to get an (independent) number of f.e. 50 last posts? Instead of 6 as stored in the wp settings?

    • WPBeginner Support says

      You should be able to change from line 12 of the code the section ‘&& $counter < 5' and change the 5 to the number of posts you want to show.

      Admin

      • Thomas Mirke says

        Thank you, you can be sure, that this was the first thing i did. But notice that when you change the number in your code it is without result. Write f.e. ‘&& $counter <20' – this does not work as there is f.e. 6 in the wordpress settings. So the question is how to overwrite those settings temporarily or to find any other solution that works without corresponding to the max-posts-per-page settings in wordpress.

        • WPBeginner Support says

          With your theme overriding the query that way, you could try adding a comma to the end of line 6 and on the next line add ‘posts_per_page’ => 20 to work on overriding your theme’s posts per page.

    • WPBeginner Support says

      You would want to check with your eCommerce plugin for what options they would recommend as they normally have a widget or similar option.

      Admin

    • WPBeginner Support says

      If you are using the code from this article, you would change the 5 to a 30 for that :)

      Admin

  3. Sascha says

    Thank you for the instructions. That was exactly what I was looking for! Finally I can show the latest updates in my sidebar.

  4. Gwénaël says

    Hi,

    It works well, but it does not respect the content permissions of the page. It turns all the content visible to anybody…

  5. Des says

    Hi,

    I followed you ‘How to Create a Custom WordPress Widget’, including ‘Creating a Site-Specific WordPress Plugin’ and that works perfectly. Great tutorial as I now have the ‘Hello world’ text displaying as a sidebar.

    But this one has me completely stumped. I followed the tutorial as best I could but it just displays my ‘Hello world’ text, never any list of updated posts.

    Where in my custom plugin file do I put the function wpb_lastupdated_posts()? Where do I put the ‘add_shortcode’ and where do I put the ‘if (function_exists(wpb_lastupdated_posts)) : ‘ statement?

    Many thanks,
    Des

  6. Tommy says

    Installed the code as stated. When using the short code- I add it to the bottom of the post. but when view the code- it puts the information on the top of the post. weird.

    • Marceli says

      Same request here. I’m interested in listing recently updated Pages + showing the last_modified date. Ideally with some excerpt or number of characters from page.

  7. jerik says

    Great code, but is there anyway to get this exact same function but based on comments made by specific user (admin) and list the most recent comment made as the top of the threads in the list?

    Thanks!

  8. Alberto Aguilar says

    Hi… great post…. Yet I was wondering if you could give me a hand on something: I need to take the picture and title of the last three published posts and arrange them in some kind of Gallery (Just to show the latest three published articles, Any idea if there’s a plugin for that, I assume I can use the code you just placed above, but Im not quite sure on the DB structure)

    Thanks in advance… =)

  9. Norberto Vargas says

    Hello

    By the way nice article, so I have a doubt.

    Where to put this code:

    “”

    thank you

  10. Pierre Guimond says

    I do not know how to change the office location address on my WordPress web site. Try as I may, I cannot reach it to change it. http://www.mastheadpa.ca I would appreciate simple and straight answer. I can do most of the upkeep but that address change eludes me and i have not seen the key in the WP information and tutorials. help.

    • WPBeginner Support says

      @Pierre your office location is stored inside a widget. Inside your WordPress admin area, go to Appearance » Widgets. On your right hand column you will see a list of widgets currently in use on your site. Look for Footer Widget Area and there you will see Get in Touch widget which you can edit and save your changes.

      Admin

  11. Steve says

    Hi, love this article but I don’t quite get what is meant to be updated when you mention ‘use it like this:
    1

    Which file is this?

    Steve

    • WPBeginner Support says

      Some users might want to display last updated posts into different templates of their WordPress themes. Those users can use this code to add it. Other users can use the shortcode to add it in their posts, pages, and widgets.

      Admin

  12. erricgunawan says

    Instead of using $counter for your loop, why don’t you just use the 'posts_per_page' attribute on the WP_Query args ?

    Mine goes like this:

    $lastupdated_args = array(
    ‘orderby’ => ‘modified’,
    ‘ignore_sticky_posts’ => 1,
    ‘posts_per_page’ => 5
    );

    Also, when I try the above code, it only give me one last modified post (not five as it should be).
    Wonder why …

  13. Mary says

    I love your articles but this one is way over my head. Are there any plugins for this? :)

    Sorry but I dont know the “innards” of the website and have broken my site when I tried a few things.

    It is a great idea though.Thanks for all you great work. Mary

    • Rudd says

      The code above is actually a ‘plugin’. Simply copy and paste the first code in functionality plugin. Then, there are two ways to display the list of posts, either using template tag or the easiest, using [lastupdated-posts] shortcode.

Leave a Reply to WPBeginner Support Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WPBeginner Assistant
How can I help you?

By chatting, you consent to this chat being stored according to our privacy policy and your email will be added to receive weekly WordPress tutorials from WPBeginner.