如何破解循环中“博客页面最多显示__条”的设置?

时间:2011-02-09 作者:Scott B

我正在存档中使用此脚本。php以列出当前类别中包含的所有帖子的链接列表。然而,它限制了相对于分配给“设置>阅读>博客页面最多显示帖子”的数量的结果计数。

换言之,此类别中可能有10个帖子,但它最多只能显示在该设置中指定的编号。

如何更改脚本以忽略此设置?

<?php if(is_category()) while (have_posts()) : the_post(); ?>
    <li id="post-<?php the_ID(); ?>">
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
        <?php the_title(); ?>
        </a> 
        <?php echo get_link_excerpt(); ?>
    </li>
<?php endwhile; } ?>

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

与其使用默认循环,不如尝试building 你自己的query.

基本上,它看起来是这样的:

$your_posts = get_posts(\'cat=123&posts_per_page=123\');
foreach ($your_post as $post) {
   do_something-with($post);
}
您可以使用参数\'posts_per_page\'=>-1nopaging=true.

(不知道为什么有人否决了这个问题?IMHO说,如果她或他打算这样做,这个人应该评论一下这个问题应该如何改进。)

SO网友:Chip Bennett

要修改posts_per_page 根据上下文设置,最好的方法是通过回调过滤查询pre_get_posts. 例如,设置posts_per_page10 对于特定类别(例如,类别ID7):

function wpse8982_filter_pre_get_posts( $query ) {
    if ( $query->is_main_query() && is_category( 7 ) ) {
        $query->set( \'posts_per_page\', \'10\' );
    }
}
add_action( \'pre_get_posts\', \'wpse8982_filter_pre_get_posts\' );
请注意,您可以通过any valid setting for posts_per_page.

SO网友:Peter Rowell

如果你想做一些非自动默认允许的事情,你需要控制你的循环。阅读上的文档The Loop 并特别注意标记为多个循环的部分。它显示了设置查询和显示内容的其他方法。你还应该看看WP_Query 因为这是这里发生的事情的关键。

结束

相关推荐

Paging in a sidebar mini loop

我切换到了另一个主题,并决定用其中的一些默认代码制作一个小部件,在自定义循环中显示我的美味帖子、推特帖子、su帖子和youtube视频(不包括主循环中的这些类别)。但是现在。。。分页不再工作。我制作了这个小部件:// =============================== EDL Sidebar Posts Widget ====================================== class SidebarPosts extends WP_Widget { &#x