How to create a page that shows the last 10 posts?

By default WordPress displays your content in a blog format on the homepage.

Using Default Static and Blog Page Settings in WordPress.
WordPress comes with built-in support for creating a custom home page (static front page), and a separate page for blog posts. To use this method, you need to create two new WordPress pages.

The first page is going to be your custom home page.

Next you need to create another page for your blog posts. You can title this page as Blog. A lot of WordPress themes come with different templates, and it is possible that your theme may have a template to be used for blog page. However, if there is no template available in your theme, then you can simply choose default. Don’t forget to disable the comments and trackbacks option on this page as well.

Now we need to get WordPress to use these pages accordingly. To do that go to Setttings » Reading and under the Front page displays option choose A static page. Below that choose the page to be used as the front page and the page for your blog posts. Save your changes, and load your site to review changes.


And If you want to create a custom Template that calls the latest 10 posts, You can use the following step (Note – You can use your own HTML for the required layout) –

Step 1: Page template

Create a blank page template named “page-blog.php” and include the following code:

    <?php
    /*
    Template Name: Blog
    */
    ?>
        <?php get_header(); ?>

        <div id="content">

        <?php query_posts('post_type=post&post_status=publish&posts_per_page=10&paged='. get_query_var('paged')); ?>

        <?php if( have_posts() ): ?>

        <?php while( have_posts() ): the_post(); ?>

        <div id="post-<?php get_the_ID(); ?>" <?php post_class(); ?>>

        <a href="https://wordpress.stackexchange.com/questions/306868/<?php the_permalink(); ?>"><?php the_post_thumbnail( array(200,220) ); ?></a>

        <h2><a href="https://wordpress.stackexchange.com/questions/306868/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

        <span class="meta"><?php author_profile_avatar_link(48); ?> <strong><?php the_time('F jS, Y'); ?></strong> / <strong><?php the_author_link(); ?></strong> / <span class="comments"><?php comments_popup_link(__('0 comments','example'),__('1 comment','example'),__('% comments','example')); ?></span></span>

        <?php the_excerpt(__('Continue reading »','example')); ?>

        </div><!-- /#post-<?php get_the_ID(); ?> -->

        <?php endwhile; ?>

        <div class="navigation">
        <span class="newer"><?php previous_posts_link(__('« Newer','example')) ?></span> <span class="older"><?php next_posts_link(__('Older »','example')) ?></span>
        </div><!-- /.navigation -->

        <?php else: ?>

        <div id="post-404" class="noposts">

        <p><?php _e('None found.','example'); ?></p>

        </div><!-- /#post-404 -->

        <?php endif; wp_reset_query(); ?>

        </div><!-- /#content -->

        <?php get_footer(); ?>

Instead of showing 5 posts, you can set posts_per_page=10 or whatever works best.

Note also that the HTML used in this example is rudimentary to keep things simple. You’ll probably need to make a few changes to the markup to synchronize with your theme design.

Step 2: Add New Page

Once page-blog.php is complete and uploaded to the server, log in to the WP Admin and visit the Add New Page screen. There, create a new page named “Blog” (or whatever you want), and set its Template as “Blog” from the “Page Attributes” panel.

Done!
Now visit the Blog page after publishing and you should see the custom WP_Query loop working: your latest blog posts will be displayed on the page.