每页显示30个帖子,但每页10个


Showposts 30 but 10 per page

我现在有这段代码显示在每个页面10 posts,但知道我想要的仍然是相同的,但总的帖子最多只能是30

我该怎么做?

 <?php query_posts('showposts=10&paged='.$paged);?> 

这是您想要显示文章的代码:

<?php  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array( 'post_type' => 'post', 'posts_per_page' => 10,'paged' => $paged);
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
    print_r($post); ?>
    <h1> <?php the_post_thumbnail(); ?></h1>
    <h2><?php the_title(); ?></h2>
    <h3><?php the_content(); ?></h3>
    <?php endwhile; ?>

这是需要显示分页的页脚。

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php if($loop->max_num_pages>1){?>
<ul class="pager">
<?php for($i=1;$i<=$loop->max_num_pages; $i++){ ?>
<li><a href="<?php  get_permalink();?>page/<?php echo $i; ?>"> <?php echo $i; ?></a></li>
<?php } ?>
</ul>

您应该使用wp_query来检索帖子,就像Pieter Goosen所说的那样,这样更有效。此外,wp_query有一个名为$max_num_page的属性,您可以使用它来限制获得的页面数量。

你可以这样修改你的分页:

        global $wp_query;
        if ( $wp_query->max_num_pages > 1 ){
            $current_page = max( 1, get_query_var('paged') );
            $max_pages = 3;
            $args = array(
              'base' => @add_query_arg('paged','%#%'),
              'format' => '/paged/%#%',
              'current' => $current_page,
              'total' => $max_pages,
              'show_all' => false,
              'type' => 'array',
              'paged' => 1
            );
            $pages = paginate_links( $args );
            if (is_array($pages)) {
                $paged = ( get_query_var('paged') == 0) ? 1 : get_query_var('paged');
                foreach( $pages as $page) {
                    echo "$page";
                }
            }
         }

我也发现了这个问题。这段代码似乎可以工作,您不需要更改当前的任何代码:

add_filter('pre_get_posts', 'limit_pages');
function limit_pages($query) {
    $query->max_num_pages = 3;
    if ($query->query_vars['paged'] > 3) {
        $query->query_vars['paged'] = 3;
        $query->query['paged'] = 3;
    }
    return $query;
}