自定义帖子类型分页错误

时间:2011-10-18 作者:Niels

您在这里经常看到的另一个分页错误。我到处寻找修复方法,但到目前为止,我已经找到了娜达。

我正在使用我的存档{$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; ?>
我做错了什么?缺少什么?

2 个回复
最合适的回答,由SO网友:Milo 整理而成

我想next_posts_link() 正在使用全局$wp_query 来确定分页,但您已经在此处创建了一个新查询。试着传球max_num_pages 从您的$loop 查询信息:

next_posts_link( \'<span class="nextpost">Next</span>\', $loop->max_num_pages );

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 设置检索到的帖子数。

结束

相关推荐

Keep Pagination in Tabs

有没有办法在多个选项卡上分页?我有一个页面有5个选项卡,每个选项卡都过滤了来自相同帖子的内容。例如:表1-所有帖子。选项卡2-带有关键字1的帖子。选项卡3-带有关键字2的帖子。等我的问题是,我不知道如何在每个选项卡上使用分页,也不知道如何让用户能够选择该选项卡上的页面并保持在该选项卡上-它想返回到第一个选项卡。