I’m querying to get a list of all posts, 20 posts_per_page, but the result shows all posts, but with 21 posts per page. If I change posts_per_page to 19, then 20 show. One post is sticky and shows up twice; not sure if that is causing the problem.

Code:

$allposts = array( 
    'post_type'         =>  'post',
    'posts_per_page'    =>  20
    );

$wp_query = new WP_Query($allposts); ?>

<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<li><?php the_title(); ?></li>

<?php foo_pagination(); ?>

<?php endwhile; ?>

1 Answer
1

Sticky posts do add to the post count rather than being included in it. You can alter your query to ignore sticky posts though.

$allposts = array( 
    'post_type'           =>  'post',
    'posts_per_page'      =>  20,
    'ignore_sticky_posts' => true
);

But you are also missing pagination parameters.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$allposts = array( 
    'post_type'           =>  'post',
    'posts_per_page'      =>  20,
    'ignore_sticky_posts' => true,
    'paged'               => $paged
);

Tags:

Leave a Reply

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