WordPress Post Looping?

时间:2017-01-04 作者:WPTester

如何避免第4页的第11、12篇文章?

  1. 我的博客中的帖子总数(比如15篇)
  2. 我想显示的最大帖子数(比如$max=10篇)
  3. 每页的帖子应该只有3篇。
    1. 
         $max = 10;  
         $items_per_page = 3;
         $paged = ( get_query_var(\'paged\') > 0 ) ? get_query_var(\'paged\') : 1;  
         $query = new WP_Query( array( \'posts_per_page\' => $items_per_page  , \'paged\' => $paged ) );  
      
         if( $query->have_posts() ) {  
          while( $query->have_posts() ) {  
           $query->the_post();  
           the_title();  
          }  
         }  
      
         $total = ceil( $max / $items_per_page );  // 4
      
         echo paginate_links( array( \'total\' => $total ) );  
      
         wp_reset_postdata();  
         wp_reset_query();
      
      

      输出

      Pagination
      
      Page 1      : Post 1, Post 2, Post 3
      Page 2      : Post 4, Post 5, Post 6
      Page 3      : Post 7, Post 8, Post 9
      Page 4      : Post 10, Post 11, Post 12 ==> should show only "Post 10"
      
      注意,根据我的问题,我只想显示10篇帖子。paginate\\u links()生成4个链接
      站点。com/page/1/=显示P1、P2、P3站点。com/page/2/=显示P4、P5、P6站点。com/page/3/=显示P7、P8、P9站点。com/page/4/=显示P10、P11、P12=>这里我需要避免P11、P12

1 个回复
SO网友:cjbj

有趣的问题。Wp_Query 将返回所有符合条件的帖子。要提高性能,可以使用关闭分页no_found_rows=true. 您需要分页并限制返回的结果量。那不是什么wp_query 可以交付。

因此,最明显但不太优雅的解决方案是修改循环,就像修改分页以切断多余结果一样:

while( $query->have_posts() ) {
   if (($wp_query->current_post) =< 10 ) {
      $query->the_post();
      the_title();
      }
  }
另一种方法是wpdb 并构建自己的mysql查询。或使用no_found_rows 并为结果构建自己的分页。

相关推荐

Custom pagination structure

当前我的分页工作方式如下http://example.com/city/usa/ #for page 1 http://example.com/city/usa/page/2 http://example.com/city/usa/page/3 ...and so on 我想将其更改为:http://example.com/city/usa/ #for page 1 http:/