在WordPress博客上每页显示相同帖子的帖子分页

时间:2020-04-20 作者:Ahmed Tawfek

在WordPress博客上,显示每页相同帖子的分页

我的循环

<?php
$args = array( \'numberposts\' => 12, \'order\'=> \'DESC\', \'orderby\' => \'date\' );
$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post); ?>

<div class="blogrollentry"> 

<p class="blogrolltitle"><?php the_title(); ?></p>

<div class="container-fluid no-padding">

<?php if ( has_post_thumbnail() ) { the_post_thumbnail(\'post-thumbnail\', array(\'class\' => \'blogpostimage1\')); } else { ?>

<img src="<?php bloginfo(\'template_directory\'); ?>/images/temp-h.jpg" class="blogpostimage1" alt="<?php the_title(); ?>" />

<?php } ?>    


</div>
<p><?php echo intro_textblog(350); ?></p>
<a class="btn btn-block btn-outline-dark my-2 my-sm-0 biggertext" href="<?php echo get_permalink(); ?>">Read More</a>

</div>    
<?php endforeach; ?>        

<?php if (  $wp_query->max_num_pages > 1 ) : ?>
                <div id="nav-below" class="navigation">
                    <div class="nav-previous"><?php next_posts_link( __( \'<span class="meta-nav">&larr;</span> Older posts\', \'BTC\' ) ); ?></div>
                    <div class="nav-next"><?php previous_posts_link( __( \'Newer posts <span class="meta-nav">&rarr;</span>\', \'BTC\' ) ); ?></div>
                </div><!-- #nav-below -->
<?php endif; ?> ``

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

每当您访问WordPress中的URL时,WordPress会根据该URL和您的设置自动为您查询正确的帖子。例如,如果您访问example.com/blog WordPress将查询您最新帖子的X号(在“设置”阅读中定义)。那么如果您访问example.com/blog/page/2 WordPress将查询您最新的帖子,以X为偏移量,获得第二页。这通常称为“主”查询。

要在主查询中循环浏览帖子,可以使用The Loop:

if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        // Display post content
    endwhile; 
endif;
注意没有get_posts()WP_Query. WordPress已经为该URL查询了正确的帖子,因此您只需使用标准循环即可。

模板的问题是分页链接基于主查询,但模板仅显示get_posts(). 所以如果你去/page/2, WordPress将查询第2页的正确帖子,但模板显示的不是这些帖子,而是使用get_posts(), 它不会基于当前页面更改其参数,因此它们始终是相同的帖子。

解决方案是删除对自定义查询的任何引用,并使用主循环:

<?php while ( have_posts() ) : the_post() ; ?>
    <div class="blogrollentry"> 
        <p class="blogrolltitle"><?php the_title(); ?></p>

        <div class="container-fluid no-padding">
            <?php if ( has_post_thumbnail() ) { the_post_thumbnail(\'post-thumbnail\', array(\'class\' => \'blogpostimage1\')); } else { ?>
                <img src="<?php bloginfo(\'template_directory\'); ?>/images/temp-h.jpg" class="blogpostimage1" alt="<?php the_title(); ?>" />
            <?php } ?>    
        </div>

        <p><?php echo intro_textblog(350); ?></p>

        <a class="btn btn-block btn-outline-dark my-2 my-sm-0 biggertext" href="<?php echo get_permalink(); ?>">Read More</a>
    </div>    
<?php endwhile; ?>

<?php if (  $wp_query->max_num_pages > 1 ) : ?>
    <div id="nav-below" class="navigation">
        <div class="nav-previous"><?php next_posts_link( __( \'<span class="meta-nav">&larr;</span> Older posts\', \'BTC\' ) ); ?></div>
        <div class="nav-next"><?php previous_posts_link( __( \'Newer posts <span class="meta-nav">&rarr;</span>\', \'BTC\' ) ); ?></div>
    </div><!-- #nav-below -->
<?php endif; ?>

相关推荐

突出显示第一页Pagination_Links

我需要WordPress的帮助。我不是WordPress开发人员,但出于某种原因,我必须在这里更改一些代码。现在说到点子上。我有一个页面,显示一些分页内容。Im使用paginate_links() 生成分页。当我在第一页时,页码不会突出显示它。但从第二页开始,它会突出显示页码。但我也要强调第一点。以下是我使用的代码:<?php $args = array( \'base\' => \'%_%\', \'format\' => \'#page%#%\