get_posts not returning all posts

2019-03-09 17:44发布

问题:

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.

回答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.



标签: wordpress