将分页与多个循环一起使用会导致中断

时间:2012-11-07 作者:Chris

我的索引页上有两个循环。一个从“工作”类别获取最新的帖子,另一个从“博客”类别获取最新的帖子。(见下文)

我还使用了一个名为WP PageNavi的插件-http://wordpress.org/extend/plugins/wp-pagenavi/. 我只想在博客部分的分页,我现在有,它的工作很好。

问题是,当我点击分页的第2页或第3页时,“工作”部分也会转到下一页,但没有足够的帖子,所以我看到了“抱歉,没有帖子”的消息。

如何使分页只影响“博客”部分?

另一个问题是,当我转到“博客”类别页面并单击那里的分页(或“查看旧帖子”,我尝试了两者)时,它会将我发送到这个url

http://localhost:8888/blog/page/2/ 
这导致在url中插入“blog”时出现404。但如果我删除“blog”,那么继续

http://localhost:8888/page/2/ 
然后它将我发送到索引页,并使用索引页上的分页。

如果这有助于我的永久链接结构是:

 /%category%/%postname%/
这是我的代码。。。

“工作”部分的第一个循环:

<?php query_posts ($query_string . \'&category_name=work\'); ?>

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <div class="grid_4 latest-work">

        <?php

        // check if the post has a Post Thumbnail assigned to it.
        if ( has_post_thumbnail() ) {
            the_post_thumbnail(\'latest-work\');  // Other resolutions
        } else {
            //No featured image supplied so use default.
        ?>

            <img src="<?php bloginfo(\'template_url\'); ?>/img/default.png" width="300" height="200"/>

        <?php   }   ?>

        <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
        <p class="client-name"><?php $key="client"; echo get_post_meta($post->ID, $key, true); ?></p>

    </div>

 <!-- Stop The Loop (but note the "else:" - see next line). -->
 <?php endwhile; else: ?>

 <p class="grid_12" style="margin-top:20px;">Sorry, no posts matched your criteria.</p>

 <!-- REALLY stop The Loop. -->
 <?php endif; ?>
“博客”部分的第二个循环:

<?php query_posts( array( \'cat\' => 6, \'paged\' => get_query_var(\'paged\') ) ); ?>

<!-- Start the Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <div class="what-moves-us" >

        <div class="home-blog-content">
            <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
                <?php the_excerpt(); ?>
            <a class="readmore" href="<?php the_permalink() ?>"></a>
        </div>

        <div class="blog-featured-image">
            <?php

            // check if the post has a Post Thumbnail assigned to it.
            if ( has_post_thumbnail() ) {
                the_post_thumbnail(\'latest-work\');  // Other resolutions
            } else {
                //No featured image supplied so use default.
            ?> 
                <img src="<?php bloginfo(\'template_url\'); ?>/img/default.png" width="300" height="200"/>
            <?php   }   ?>
        </div>

    </div>

 <?php endwhile; else: ?>

 <p class="grid_12" style="margin:20px 0 0 0;">Sorry, no posts matched your criteria.</p>

 <!-- REALLY stop The Loop. -->
 <?php endif; ?>

<?php wp_pagenavi(); ?>

1 个回复
SO网友:Mridul Aggarwal

第一个问题可以通过更改工作区中的query\\u帖子来解决。代替\'&category_name=work\' 具有\'&category_name=work&paged=1&posts_per_page=-1\'

对于第二个问题,为什么不使用类别模板本身来代替index.php?

作为补充说明,您不应该使用query_posts 对于此用例。您应该使用新的WP_Query 工作循环的对象(&A);pre_get_posts 主回路过滤器

结束

相关推荐

未显示div和loop/php项的表

我知道这是一个荒谬的问题,因为谁还会用桌子?我得到了这个,只需要让它真正起作用。我对桌子一无所知,所以这是一次学习的经历。我终于找到了我的循环,但只是其中的一部分。我遗漏了一些重要的项目,无法解决。示例:显示文章标题,但它不是超链接。我试着把这些放在帖子里,但它们坏得很厉害,所以我用了pastebin。我想是因为桌子?英雄联盟博客php可在此处查看:http://pastebin.com/fYyhGMYa实时版本:http://elite.ikvclients.com/blog/非常感谢您的任何见解或帮助