How to have more post in a page than in your home page

I would recommend creating a custom template and utilize a custom query to do this.

This is because changing the maximum posts to any number will affect every page that has a list of posts unless you specify otherwise.

By making your own query you can set the number of posts you want by using something like:

get_posts( 'posts_per_page=4' )

So for example you can create a custom template file called ‘template-four-posts.php’ and put this in your theme’s folder content/themes/[your-theme-name]/ .

Next open this file and add in these lines of code.

These first few lines will pull in your header file as well as name our template.

<?php
/*
Template Name: Four Post Count
*/
get_header(); ?>

This next set of code is to prepare our query by asking for 4 posts of the post type ‘post’ and ordering it by post date in descending order:

<?php 
$recent_posts_query = array(
'numberposts' => 4,
'post_type'   => 'post',
'orderby'     => 'post_date',
'order'           => 'DESC',
);

Next we use our query to find the most recent 4 posts:

$recent_posts = get_posts( $recent_posts_query );

Then we run through a loop taking each post and adding it to the page. This code will show each post and display it’s date, title and link to the post:

foreach( $recent_posts as $post ) : setup_postdata($post); ?>
<div class="post">
    <p class="date"><?php the_time('M j, Y'); ?></p>
    <p><a class="title" href="https://wordpress.stackexchange.com/questions/106004/<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
</div><!-- .post -->
<?php
endforeach;
?>

This last piece is to call your footer file and add that code to your page:

<?php get_footer(); ?>

Altogether your code should look like this:

    <?php
    /*
    Template Name: Four Post Count
    */
    get_header(); ?>
<?php 
$recent_posts_query = array(
    'numberposts' => 4,
    'post_type'   => 'post',
    'orderby'     => 'post_date',
    'order'           => 'DESC',
);

$recent_posts = get_posts( $recent_posts_query );

foreach( $recent_posts as $post ) : setup_postdata($post);      
    ?>
    <div class="post">
        <p class="date"><?php the_time('M j, Y'); ?></p>
        <p><a class="title" href="https://wordpress.stackexchange.com/questions/106004/<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
    </div><!-- .post -->
    <?php       
endforeach;
?>
 <?php get_footer(); ?>

Next log into the backend of your site and click on a page. Next select find the ‘Page Attributes’ meta box on the right hand side and select the template named ‘Four Post Count’ from the template drop down and click update.

Then go visit this page and you should see the list of page.

Keep in mind the way this looks may differ depending on the template you are using and what code is in your header.php or footer.php files.