自定义循环中的分页不起作用


Pagination in custom loop not working

我已经搜索了关于这个问题的几个主题和问题,但还没有找到适合我的代码的答案。

会显示我的自定义帖子的分页,但当我单击Show next posts >>时,会显示上一页的相同帖子,即使URL显示?paged=2

我的代码如下:

<div class="podcast-entries">
    <?php
    $args = array( 'post_type' => 'strn5_podcasts',
                   'posts_per_page' => 3,
                   'paged' => (get_query_var('paged') ? get_query_var('paged') : 1 );
    $temp = $wp_query;
    $wp_query = null;
    $wp_query = new WP_Query( $args );
    if ( $wp_query->have_posts() ) : 
    while ( $wp_query->have_posts() ) :
    $wp_query->the_post();
    ?>
        <div <?php post_class(); ?> >
            <h4 class="podcast-title"><?php the_title(); ?></h4>
            <div class="podcast-content">
                <?php the_content(); ?>
            </div>
            <h6><?php the_time('F j, Y'); ?></h6>
            <div class="post-separator col-lg-12"></div>
        </div>
    <?php endwhile; endif; ?>
    <div class="navigation-links">
        <div class="next-post">
            <?php next_posts_link( '>> Siguiente Entrada' ); ?>
        </div>
        <div class="previous-post">
            <?php previous_posts_link( 'Anterior Entrada >>' ); ?>
        </div>
    </div>
    <?php $wp_query = null; 
    $wp_query = $temp;
    wp_reset_query(); ?>
</div> <!-- .podcast-entries -->

通常,当某个东西不起作用时,我会把它从所有东西中剥离出来,并开始用最基本的东西重新构建它,看看问题可能是什么。

你为什么不尝试一种更简单的循环形式,看看你是否能把它送到主

<?php query_posts(array('posts_per_page' => 3, 'post_type' => 'strn5_podcasts', 'paged' => get_query_var('page'))); if (have_posts()) : while (have_posts()) : the_post(); ?>
  <p><?php the_title(); ?></p>
<?php endwhile; endif;?>
<div class="navigation-links">
  <div class="next-post"><?php next_posts_link( '>> Siguiente Entrada' ); ?></div>
  <div class="previous-post"><?php previous_posts_link( 'Anterior Entrada >>' ); ?></div>
</div>

这几乎和你正在做的事情一样(几乎),但没有任何变量或任何其他"可能"出错的事情。

编辑

最后,结果证明paged参数可以与pagedpage一起使用,在这种情况下,它可以使用page而不是paged

所以它最终看起来是这样的:

'paged' => get_query_var('page')

最后,如果您在设置为主页的自定义页面模板中使用查询帖子,则需要使用get_query_var('page')

我同意硫磺。我认为更具体地说,这三条线是问题所在:

$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query( $args );

根据您的描述,如果$wp_query被捕获为非空,这似乎会导致问题。我不知道你为什么会把它放在里面,但你一定有自己的理由。

至少把它的前两行去掉,以帮助您排除故障。