您在这里经常看到的另一个分页错误。我到处寻找修复方法,但到目前为止,我已经找到了娜达。
我正在使用我的存档{$post\\u type}分页CPT结果。php模板和获取不完整的帖子返回。我已将posts\\u per\\u page设置为8,并返回3页以获得24个结果。有27篇帖子,所以我缺了3篇(即分页没有显示最后3篇帖子)。
这是我的模板文件(为清晰起见,HTML已剥离):
<?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; ?>
我做错了什么?缺少什么?
SO网友:Niels
根据@Milo的评论,解决方案在于使用query_posts();
在这种情况下WP_Query
.
修复需要三个更改:
转到wp admin(wp管理)>settings(设置)>reading(读取)并将“blogsshow(最多)”的值更改为小于查询中设置的值。我将其设置为1。
使用query_posts($args);
而不是$loop = new WP_Query($args);
. 我从这个开始,但是WP_Query
作为解决方法。正如@Milo提到的,这并不是真正必要的,因为模板中只调用了一个循环。
由于查询数量已在wp admin中编辑,因此主题中的任何其他循环都需要由query_posts
设置检索到的帖子数。