Wordpress自定义帖子分页404错误

时间:2017-04-25 16:54:26

标签: php wordpress pagination

我整天都在寻找答案,但没有运气。

我制作了自定义帖子类型,因此我可以在页面模板上显示帖子分页无效 我收到404错误

也许有些人可以指导我并告诉我这是什么问题。这是 site

使用此密码 broncosrule 。 谢谢。

这是代码。

自定义页面模板:

<?php
/**
 * Template Name: Custom Page
 * The custom page template file
 */ 
?>

<?php get_header(); ?>



<?php 

  $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

  $custom_args = array(
      'post_type' => 'trestleboard',
      'posts_per_page' => 1,
      'paged' => $paged

    );

  $custom_query = new WP_Query( $custom_args ); ?>

  <?php if ( $custom_query->have_posts() ) : ?>

    <!-- the loop -->
    <?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
      <article class="loop">
        <!--<h3><?php the_title(); ?></h3>-->
        <div class="content">
          <?php the_content(); ?>
        </div>
      </article>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <!-- pagination here -->
    <?php
      if (function_exists(custom_pagination)) {
        custom_pagination($custom_query->max_num_pages,"",$paged);
      }
    ?>

  <?php wp_reset_postdata(); ?>

  <?php else:  ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
  <?php endif; ?>

<?php get_footer(); ?>

Functions.php文件

// Our custom post type function
function custom_pagination($numpages = '', $pagerange = '', $paged='') {

  if (empty($pagerange)) {
    $pagerange = 2;
  }

  /**
   * This first part of our function is a fallback
   * for custom pagination inside a regular loop that
   * uses the global $paged and global $wp_query variables.
   * 
   * It's good because we can now override default pagination
   * in our theme, and use this function in default queries
   * and custom queries.
   */
  global $paged;
  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }

  /** 
   * We construct the pagination arguments to enter into our paginate_links
   * function. 
   */
  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('&laquo;'),
    'next_text'       => __('&raquo;'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
      echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
      echo $paginate_links;
    echo "</nav>";
  }

}

3 个答案:

答案 0 :(得分:2)

我认为问题出现了,因为您的页面slug与自定义帖子类型slug相同。

您可以通过临时修改页面slug来快速检查这是否是问题。

选项:

  • 修改自定义帖子类型的重写规则,或者
  • 修改页面slug
祝你好运!

答案 1 :(得分:0)

你能试试这个链接吗?他们详细解释了这一点。

另外请检查您的重写规则。

https://code.tutsplus.com/articles/custom-post-type-pagination-chaining-method--wp-21444

答案 2 :(得分:0)

这对我有用  请使用自定义帖子类型名称"your_custom_post_type"

进行更改
 function custom_posts_per_page( $query ) {
        //fixing pagination of custom post type
        if ( $query->is_archive('your_custom_post_type') ) {
            set_query_var('posts_per_page', 1);
        }
    }
    add_action( 'pre_get_posts', 'custom_posts_per_page' );