我已经搜索过有关此问题的几个主题和问题,但我找不到任何适合我的代码的答案。
显示自定义帖子的分页,但是当我点击Show next posts >>
时,即使网址显示?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 -->
答案 0 :(得分:0)
通常情况下,当我无法正常工作时,我会将其从所有内容中删除,并开始使用基础知识进行重建,以查看问题所在。
为什么不尝试使用更简单的循环形式来查看是否可以将其转换为prin.t
<?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
参数可以与paged
或page
一起使用,在这种情况下,page
代替{paged
{1}}
所以最终看起来像这样:
'paged' => get_query_var('page')
最后请注意,如果您在自定义页面模板中使用查询帖子,则需要使用get_query_var('page')
。
答案 1 :(得分:0)
我同意含硫。我更具体地说,这三行是问题所在:
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query( $args );
基于您的描述,如果$wp_query
被捕获为非空,这似乎会导致问题。我不确定你为什么在那里拥有它,但你必须有你的理由。
至少要把它排除在前两行,以帮助您排除故障。