Wordpress 简码功能 - 分类模板分页

Wordpress shortcode function - pagination on taxonomy template

我有下面的代码,当我在 wp 页面上使用它时,它可以正常工作。在分类模板 (taxonomy.php) 上,分页开始正常工作,但在几页之后查询仍然有帖子显示中断并出现 404 错误。

例如,它有 29 个帖子要显示,每页 4 个帖子。直到第 6 页,一切正常,当我单击下一步(第 7 页)时,它显示 index.php 模板并出现 404 错误,而查询结果应创建 8 页。

<?php 
function get_featured_projects_shortcode_function(){
  $return =  '';

  global $paged;
      if ( get_query_var('paged') ) {
      $paged = get_query_var('paged');
      } elseif ( get_query_var('page') ) {
      $paged = get_query_var('page');
      } else {
      $paged = 1;
      }

  $posts_per_page = 4;

  $category_name = single_cat_title("", false);

  $args = array(
            'post_type' => 'project',
            'tax_query' => array(
                    array( 
                    'taxonomy' => 'project_category',
                    'field'    => 'name',
                    'terms'    => array( $category_name ) ),
            ),
             'posts_per_page' => $posts_per_page,
             'post_status' => 'publish',
             'orderby' => 'date',
             'order' => 'DESC',
             'paged' => $paged,
             'page' => $paged
          );

  $query = new WP_Query($args); 

  $total_found_posts = $query->found_posts;
  $total_page = ceil($total_found_posts / $posts_per_page);

  if ( $query->have_posts() ) {
    $return .= '<div class="proj-holder">';
    while ( $query->have_posts() ) {
            $query->the_post();
            $return .=  get_the_title();
    }
      $return .= '</div>';
  }

  if(function_exists('wp_pagenavi')) {
         $return .='<div class="page-navigation">'.wp_pagenavi(array('query' => $query, 'echo' => false)).'</div>';
     } else {
         $return.='<div class="posts-links-next-prev">
         <span class="prev-posts-links">'.get_previous_posts_link('<< Previous ').'</span>
         <span class="next-posts-links">'.get_next_posts_link(' Next >>', $total_page).'</span>
         </div>';
     }

  return $return;

 wp_reset_postdata();
}
?>

之前遇到过类似问题 -

我的问题是,posts per page 在 wp-admin 中设置为其他内容,导致 wordpress 对应该有多少页进行奇怪的计算。

如果你将这两个匹配起来,它应该可以正常工作。

并且在评论区看到,还好,也解决了这个问题