用于定制查询返回的分页404

时间:2018-05-25 作者:M. Dillen

对于一个项目,我创建了一个名为“剧集”的自定义帖子类型,注册方式如下。

 register_post_type( \'episodes\',
array(
  \'labels\' => array(
    \'name\' => __( \'Episodes\' ),
    \'singular_name\' => __( \'Episode\' )
  ),
  \'public\' => true,
  \'has_archive\' => false,
  \'hierarchical\' => true,
  \'rewrite\' => array( \'slug\' => \'episodes\'),
)
);
我还创建了一个名为“剧集”的页面。我的想法是,我想要一个有一些基本信息的页面,在一个有8集的网格下,可以通过分页点击。要清楚的是,插曲页面的内容应该始终显示出来,即使是在网格的第2或第3页上。

为了实现这一点,我创建了page-episodes.php 文件,复制的内容page.php 并在页面中添加了以下代码:

<?php 
        $paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;

        $args = array(
            \'post_type\' => \'episodes\',
            \'posts_per_page\' => 8,
            \'paged\'          => $paged,
        );

        $query = new WP_Query( $args );
    ?>

    <div class="row">
<?php if($query->have_posts()) : while($query->have_posts()) : $query->the_post(); ?>
    <div class="col-3 episode">
      <a href="<?php the_permalink()?>">
        <span class="episodeNumber"><?php echo get_field("episode_number", $post->ID)?></span>
        <h1><?php the_title() ?></h1>
      </a>
    </div>
  <?php endwhile; endif; ?>

</div>
<div class="row">
  <div class="col-12 pagination">
            <?php 
                echo paginate_links();
            ?>
  </div>
</div>
但每当我使用分页并转到/episodes/page/2 例如,页面返回404.php

我希望我已经给了你足够的信息,如果没有,请询问。我真的很想知道我做错了什么。

1 个回复
SO网友:Jacob Peattie

WordPress为您做这件事。您不需要自定义页面模板或自定义查询和分页。

刚刚设置好\'has_archive\'true 注册帖子类型时。然后您会自动获得/episodes/episodes/page/X.

那么你只需要创建archive-afleveringen.php 对于模板,并在该模板中使用用于主查询的函数:

<?php if( have_posts()) : while( have_posts()) : the_post(); ?>
您也不需要创建自己的查询或使用paged 完全

结束

相关推荐

Need help with pagination

我在计算分页时遇到了一个问题。使用我在这里找到的信息Wordpress Pagination Not Working - Always Showing First Pages Content 线程,我已成功在页面上设置分页。代码如下所示:<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $args = array( \'posts_per_page\' => 10