【问题标题】:Pagination in custom loop not working自定义循环中的分页不起作用
【发布时间】:2013-08-10 00:49:38
【问题描述】:

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

显示了我的自定义帖子的分页,但是当我点击 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 -->

【问题讨论】:

  • next_posts_link和previous_posts_link的代码是什么?

标签: php wordpress wordpress-theming


【解决方案1】:

通常,当某些东西不起作用时,我会从所有东西中剥离它,然后开始用简单的基础重新构建它,看看可能是什么问题。

你为什么不尝试一种更简单的循环形式,看看你能不能把它打印出来

<?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

所以它最终看起来像这样:

'paged' =&gt; get_query_var('page')

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

【讨论】:

  • 感谢大家的回答!我的问题仍然存在。我的分页在另一个使用默认循环的文件中起作用,所以我很确定它与自定义帖子有关。我会尝试一些其他的东西,看看我能不能让它工作
  • 对于 post_type 的帖子或您的自定义帖子类型,从技术上讲,这样做并没有什么特别之处。两者的工作方式相同,当我在我的另一个项目中尝试我的循环时,我可以看到它有效。试试get_query_var('page') ...注意它不是paged,最后是D。
  • 毕竟是那个额外的“d”。在一遍又一遍地查看代码之后,可能会遗漏这些微小的部分。谢谢。
  • 不要认为你做错了......两种方式都应该有效,但我记得在某处读到当paged不起作用时,我们应该尝试page
【解决方案2】:

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

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

根据您的描述,如果$wp_query 被捕获为非空,这似乎会导致问题。我不知道你为什么会有那个,但你必须有你的理由。

至少把它的前两行去掉,以帮助您解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多