get_posts not returning all posts

I have to mount the blog posts manually, but I’m not sure if this is the correct way to work, It only brings 9 pages, with 4 posts each, but the blog has 83 posts!

<?php
    $paged = get_query_var('paged');
    $args = array(
        'numberposts'       => 4,
        'offset'            => $paged*4,
        'orderby'           => 'post_date',
        'order'             => 'DESC',
        'post_type'         => 'post',
        'post_status'       => 'publish',
        'suppress_filters'  => true
    );
    $posts_array = get_posts( $args );
?>

Thanks anyway.

Related posts

Leave a Reply

2 comments

  1. Problem is your ‘numberposts’ is set to 4
    Put it at -1 to get all posts:

     'numberposts'       => -1,
    

    If you don’t set numberposts here, WordPress will pull the number of posts from your Dashboard settings (under Settings -> Reading)

  2. The below note is from this codex section.

    Note: With use of the offset, the above query should be used only on a
    category that has more than one post in it, otherwise there’ll be no
    output.

    So in-order to display all posts, there should be at-least 2 posts in each categories.

    You can try Loops to get all posts. Check The Loop in Action also.