Page with Multiple Loops Breaking Pagination

The content is the same because the loops are the result of the get_posts() call which does not take into account the page you are on. In short you are not looping through the results of your WP_Query but instead the get_posts() . Try replacing get_posts and the foreach with a while loop using the results of WP_Query .

Each of your loops should be of the form:

$wp_query = new WP_Query($args);

while ($wp_query->have_posts() ) : $wp_query->the_post();
//display contents here
endwhile;

For you purpose, $args would be 'showposts=4'.'&paged='.$paged where $paged is the page you are on.

If you are simply trying to output your posts with the first 1 styled one way, the next 5 styled another etc. It is probably best to have only one loop and but use some if statements inside to format the posts appropriately.

(NB if you are attempting to have several loops on one page, all of which paginate: without a bit of effort, that won’t work. Since there is only one $paged variable for all the loops. )