Another one of these paging errors you see here so often. I searched high and low for a fix but have come up with nada so far.
I am paging CPT results using my archive-{$post_type}.php template and getting an incomplete return of posts. I have set posts_per_page to 8, and am return 3 pages to get 24 results. There are 27 posts, so I am missing 3 (ie. paging falls short of showing last 3 posts).
Here's my template file (HTML stripped for clarity):
<?php /* SET UP */
wp_reset_query();
// Selected team member
$team_member_id = $_GET['member'];
// Top post by menu order
$top_post = get_posts('post_type=team&numberposts=1&orderby=menu_order&order=ASC');
$top_post_id = $top_post[0]->ID;
// Set $current_team_member_id
if ($team_member_id) {
$current_team_member_id = $team_member_id;
} else {
$current_team_member_id = $top_post_id;
}
?>
<?php /* MENU */
// Paging
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Args
$args = array(
'post_type'=> 'team',
'posts_per_page' => '8',
'paged' => $page,
'orderby' => 'menu_order',
'order' => 'ASC',
);
// New instance of WP_Query
$loop = new WP_Query($args);
if ($loop->have_posts()) :
?>
<?php next_posts_link('<span class="nextpost">Next</span>' ); ?>
<?php previous_posts_link('<span class="previouspost">Back</span>' ); ?>
<?php while ($loop->have_posts()) : $loop->the_post(); ?>
<?php $post_id = get_the_ID();
$postclass = '';
if( $current_team_member_id == $post_id ) {
$postclass = 'current';
} elseif ( $top_post_id == $post_id && $current_team_member_id == NULL) {
$postclass = 'current';
} else {
$postclass = 'post';
}
$url = get_bloginfo('url').'?post_type=team&member='.$post_id.'&paged='.$page;
?>
<a id="team-member-<?php print $post_id; ?>" href="<?php print $url; ?>" class="<?php print $postclass; ?> <?php print $top_post_id; ?>"><?php the_title() ;?></a><br>
<?php echo get_post_meta( $post->ID, '_exit_member_metabox_pos', true ); ?>
<?php endwhile; ?>
<?php /* MEMBER PROFILE */
$current_team_member_post = get_post($current_team_member_id );
setup_postdata($current_team_member_post);
?>
<?php echo $current_team_member_post->post_title; ?>
<?php echo get_post_meta( $current_team_member_id , '_exit_member_metabox_pos', true ); ?>
<?php the_content(); ?>
<?php echo get_the_post_thumbnail($current_team_member_id, 'pic-third'); ?>
<?php else: ?>
<p>Sorry, but this content is not available.</p>
<?php endif; ?>
What am I doing wrong? What's missing?