Wordpress短代码功能 - 分类模板上的分页

时间:2018-03-21 09:15:22

标签: php wordpress shortcode taxonomy custom-taxonomy

当我在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();
}
?>

1 个答案:

答案 0 :(得分:1)

之前有过类似的问题 -

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

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

通过评论部分,我们可以看到,幸运的是,它也解决了这个问题。